启用Nginx反向代理时Docker COPY文件丢失,Blazor WASM部署异常
Blazor WASM部署Docker容器异常排查
我正在学习Docker,尝试将Blazor WASM应用发布到Docker容器中,遇到了以下异常情况:
相关配置文件
docker-compose.yml
version: '3.7' services: reverseproxy: build: context: . dockerfile: nginx/nginx.Dockerfile ports: - "44395:44395" networks: testnet test.ui: build: context: . dockerfile: Web/Dockerfile depends_on: - reverseproxy environment: - ASPNETCORE_URLS=http://*:5005 - ASPNETCORE_ENVIRONMENT=Development ports: - "5005:5005" networks: - testnet networks: testnet: {}
Nginx Dockerfile(路径:nginx/nginx.Dockerfile)
FROM nginx COPY nginx/nginx.local.conf /etc/nginx/nginx.conf
初始Blazor WASM Dockerfile(路径:Web/Dockerfile)
FROM mcr.microsoft.com/dotnet/sdk:7.0-alpine AS publish RUN apk add nodejs RUN apk add npm WORKDIR /src COPY . . WORKDIR "/src/Web" RUN npm install RUN dotnet publish "Web.csproj" -c Release -o /output FROM nginx:alpine WORKDIR /usr/share/nginx/html COPY --from=publish /output/wwwroot .
初始配置下,文件未正确复制到目标目录。
更新后的Blazor WASM Dockerfile
FROM mcr.microsoft.com/dotnet/sdk:7.0-alpine AS build-env RUN apk add nodejs RUN apk add npm WORKDIR /app COPY . ./ # 此处修改 WORKDIR "/app/Web" RUN npm install RUN dotnet publish -c Release -o output FROM nginx:alpine WORKDIR /usr/share/nginx/html COPY --from=build-env /app/Web/output/wwwroot/ . # 此处修改
问题现象
- 单独运行更新后的Dockerfile时,
/app/Web/output/wwwroot/下的内容可正常复制到/usr/share/nginx/html,编译构建流程无异常。 - 通过docker-compose运行时,reverseproxy服务正常持续运行,但test.ui容器出现异常:进入容器后发现
/usr/share/nginx目录不存在,执行命令报错如下:
C:\Users\xxxx>docker exec -it 18aa171dae9d sh /app/Web # cd .. /app # cd .. / # cd usr /usr # cd share /usr/share # cd nginx sh: cd: can't cd to nginx: No such file or directory /usr/share #
- 注释docker-compose.yml中的reverseproxy服务后,test.ui的文件复制恢复正常;重新启用reverseproxy服务则目录丢失,且构建日志显示publish步骤完成后直接开始导出镜像,未执行COPY操作。
内容的提问来源于stack exchange,提问作者fingers10
相关产品推荐
相关产品推荐

