Я запускаю веб-приложение .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#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как записать данные в appsettings.json в консольном приложении (.net Core)?
Anonymous » » в форуме C# - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-