Через docker-compose поднимаю 3 сервиса сразу: Web API (C#, Net 8), Blazor WASM (C#, Net 8), Postgre.
Встают 1 и 3 сервисы, а Blazor упорно не хочет подниматься именно при запуске через Visual Studio. То есть Blazor контейнер не поднимается в буквальном смысле, в нем нет ни единой строчки логов, хотя в списке Docker-desktop он горит как запущенный
Если запустить руками через powershell, то все 3 сервиса поднимаются и работают как должны.
Docker-compose:
services:
api-server:
depends_on:
- api-db
build:
context: .
dockerfile: src/ApiServer/Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=http://+:80
- DB_HOST=email-db
container_name: api-server
image: api-server:latest
restart: always
ports:
- 15000:80
api-client:
depends_on:
- api-server
build:
context: .
dockerfile: src/ApiServer.Client/Dockerfile
args:
BUILD_ENVIRONMENT: Development
container_name: api-client
image: api-client:latest
restart: always
ports:
- 15100:80
api-db:
image: postgres:17-alpine
container_name: api-db
environment:
POSTGRES_USER: test-user
POSTGRES_PASSWORD: test-password
POSTGRES_DB: Test
ports:
- 5432:5432
volumes:
- postgres_data:/var/lib/postgresql/data
restart: always
volumes:
postgres_data:
name: test_data
Dockerfile blazor приложения:
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY src/ApiServer.Client/ApiServer.Client.csproj ./ApiServer.Client/
WORKDIR /src/ApiServer.Client
RUN dotnet restore
COPY src/ApiServer.Client/. ./
COPY /modules /modules
RUN dotnet publish -c Release -o /app/publish
FROM nginx:alpine AS final
ARG BUILD_ENVIRONMENT
COPY src/ApiServer.Client/nginx.conf /etc/nginx/nginx.conf
COPY --from=build /app/publish/wwwroot /usr/share/nginx/html
RUN sed -i -e 's/TO_REPLACE_BLAZOR_ENVIRONMENT/'"$BUILD_ENVIRONMENT"'/g' /etc/nginx/nginx.conf
С чем может быть связано такое поведение и как его убрать, чтобы стартовали все 3 контейнера?
UPD: если открыть просмотр файлов контейнера с Blazor приложением, то в /usr/share/nginx/html - нет ничего, а если быть точнее, то даже папки nginx нет.
UPD 2: в консоли было замечено, что студия запускает дополнительно docker-compose.vs.debug.g.yml:
docker compose -f "D:\repos\ApiServer\docker-compose.yml" -f "D:\repos\ApiServer\obj\Docker\docker-compose.vs.debug.g.yml" -p dockercompose8518693767120285951 --ansi never up -d
services:
api-client:
image: api-client:dev
build:
args:
LAUNCHING_FROM_VS: true
BUILD_CONFIGURATION: Debug
target: build
labels:
com.microsoft.created-by: "visual-studio"
com.microsoft.visual-studio.project-name: "ApiServer.Client"
environment:
- DOTNET_USE_POLLING_FILE_WATCHER=1
- ASPNETCORE_LOGGING__CONSOLE__DISABLECOLORS=true
- NUGET_FALLBACK_PACKAGES=
volumes:
- D:\repos\ApiServer\src\ApiServer.Client:/app:rw
- D:\repos\ApiServer:/src:rw
- C:\Users\user\vsdbg\vs2017u5:/remote_debugger:rw
- D:\NugetCache\packages:/.nuget/packages:ro
- C:\Users\user\AppData\Roaming\ASP.NET\Https:/root/.aspnet/https:ro
- C:\Users\user\AppData\Roaming\ASP.NET\Https:/home/app/.aspnet/https:ro
- C:\Users\user\AppData\Roaming\Microsoft\UserSecrets:/root/.microsoft/usersecrets:ro
- C:\Users\user\AppData\Roaming\Microsoft\UserSecrets:/home/app/.microsoft/usersecrets:ro
- C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Sdks\Microsoft.Docker.Sdk\tools\linux-x64\net8.0:/VSTools:ro
- C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\HotReload:/HotReloadAgent:ro
entrypoint: "dotnet --roll-forward Major /VSTools/DistrolessHelper/DistrolessHelper.dll --wait"
labels:
com.microsoft.visualstudio.debuggee.program: "dotnet"
com.microsoft.visualstudio.debuggee.arguments: " --additionalProbingPath /.nuget/packages \"\""
com.microsoft.visualstudio.debuggee.workingdirectory: "/app"
com.microsoft.visualstudio.debuggee.killprogram: "dotnet --roll-forward Major /VSTools/DistrolessHelper/DistrolessHelper.dll --stop dotnet"
tty: true
api-server:
image: api-server:dev
build:
args:
LAUNCHING_FROM_VS: true
BUILD_CONFIGURATION: Debug
target: base
labels:
com.microsoft.created-by: "visual-studio"
com.microsoft.visual-studio.project-name: "ApiServer"
environment:
- DOTNET_USE_POLLING_FILE_WATCHER=1
- ASPNETCORE_LOGGING__CONSOLE__DISABLECOLORS=true
- NUGET_FALLBACK_PACKAGES=
volumes:
- D:\repos\ApiServer\src\ApiServer:/app:rw
- D:\repos\ApiServer:/src:rw
- C:\Users\user\vsdbg\vs2017u5:/remote_debugger:rw
- D:\NugetCache\packages:/.nuget/packages:ro
- C:\Users\user\AppData\Roaming\ASP.NET\Https:/root/.aspnet/https:ro
- C:\Users\user\AppData\Roaming\ASP.NET\Https:/home/app/.aspnet/https:ro
- C:\Users\user\AppData\Roaming\Microsoft\UserSecrets:/root/.microsoft/usersecrets:ro
- C:\Users\user\AppData\Roaming\Microsoft\UserSecrets:/home/app/.microsoft/usersecrets:ro
- C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Sdks\Microsoft.Docker.Sdk\tools\linux-x64\net8.0:/VSTools:ro
- C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\HotReload:/HotReloadAgent:ro
entrypoint: "dotnet --roll-forward Major /VSTools/DistrolessHelper/DistrolessHelper.dll --wait"
labels:
com.microsoft.visualstudio.debuggee.program: "dotnet"
com.microsoft.visualstudio.debuggee.arguments: " --additionalProbingPath /.nuget/packages \"/app/bin/Debug/net8.0/ApiServer.dll\""
com.microsoft.visualstudio.debuggee.workingdirectory: "/app"
com.microsoft.visualstudio.debuggee.killprogram: "dotnet --roll-forward Major /VSTools/DistrolessHelper/DistrolessHelper.dll --stop dotnet"
tty: true