Я запускаю веб-приложение .NET Core внутри Docker с помощью Docker Compose, но у меня возникли проблемы с получением переменных среды, указанных в моем файле docker-compose.yml, для переопределения строк подключения, определенных в appsettings.json.< /p>
Несмотря на настройку переменной среды ConnectionStrings__DefaultConnection в docker-compose.yml, приложение по-прежнему использует строку подключения из appsettings.json или appsettings.Development.json, который указывает на localhost. Это приводит к ошибке подключения, когда приложение пытается подключиться к базе данных PostgreSQL, работающей в другом контейнере Docker.
Dockerfile:< /p>
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app
EXPOSE 80
# Copy the solution file
COPY test-docker.sln ./
COPY test-docker/test-docker.csproj test-docker/
RUN dotnet restore test-docker.sln
COPY . .
# Build and publish the application
WORKDIR /app/test-docker
RUN dotnet publish -c Release -o /app/out
# Stage 2: Runtime Stage
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app/out .
ENTRYPOINT ["dotnet", "test-docker.dll"]
docker-compose.yml:
services:
db:
image: postgres:15
environment:
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
POSTGRES_DB: mydatabase
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
webapp:
image: test-docker-app
build:
context: .
dockerfile: test-docker/Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=http://+:80
- ConnectionStrings__DefaultConnection=Host=db;Port=5432;Database=mydatabase;Username=myuser;Password=mypassword
depends_on:
- db
ports:
- "8081:80"
volumes:
pgdata:
appsettings.Development.json:
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Port=5432;Database=mydatabase;Username=myuser;Password=mypassword"
}
}
Проблема:
при запуске приложения в докере
---> System.Net.Sockets.SocketException (99): Cannot assign requested address [::1]:5432
Подробнее здесь: https://stackoverflow.com/questions/792 ... son-in-net
Переменные среды в Docker Compose не переопределяют appsettings.json в приложении .NET Core ⇐ C#
Место общения программистов C#
1732555886
Anonymous
Я запускаю веб-приложение .NET Core внутри Docker с помощью Docker Compose, но у меня возникли проблемы с получением переменных среды, указанных в моем файле docker-compose.yml, для переопределения строк подключения, определенных в appsettings.json.< /p>
Несмотря на настройку переменной среды [b]ConnectionStrings__DefaultConnection[/b] в docker-compose.yml, приложение по-прежнему использует строку подключения из appsettings.json или appsettings.Development.json, который указывает на localhost. Это приводит к ошибке подключения, когда приложение пытается подключиться к базе данных PostgreSQL, работающей в другом контейнере Docker.
[b]Dockerfile[/b]:< /p>
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app
EXPOSE 80
# Copy the solution file
COPY test-docker.sln ./
COPY test-docker/test-docker.csproj test-docker/
RUN dotnet restore test-docker.sln
COPY . .
# Build and publish the application
WORKDIR /app/test-docker
RUN dotnet publish -c Release -o /app/out
# Stage 2: Runtime Stage
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app/out .
ENTRYPOINT ["dotnet", "test-docker.dll"]
[b]docker-compose.yml:[/b]
services:
db:
image: postgres:15
environment:
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
POSTGRES_DB: mydatabase
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
webapp:
image: test-docker-app
build:
context: .
dockerfile: test-docker/Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=http://+:80
- ConnectionStrings__DefaultConnection=Host=db;Port=5432;Database=mydatabase;Username=myuser;Password=mypassword
depends_on:
- db
ports:
- "8081:80"
volumes:
pgdata:
[b]appsettings.Development.json:[/b]
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Port=5432;Database=mydatabase;Username=myuser;Password=mypassword"
}
}
[b]Проблема:[/b]
при запуске приложения в докере
---> System.Net.Sockets.SocketException (99): Cannot assign requested address [::1]:5432
Подробнее здесь: [url]https://stackoverflow.com/questions/79211349/environment-variables-in-docker-compose-not-overriding-appsettings-json-in-net[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия