首页 > 解决方案 > Docker-compose 卷未安装

问题描述

我有一个简单的 ASP.net Core 项目,我使用 docker-compose 在 docker 容器中运行。我正在尝试挂载主机目录以保存一些文件,例如日志文件。

我的 Dockerfile 看起来像这样:

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 55498
EXPOSE 44396

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY calibration-upload-server/calibration-upload-server.csproj calibration-upload-server/
RUN dotnet restore calibration-upload-server/calibration-upload-server.csproj
COPY . .
WORKDIR /src/calibration-upload-server
RUN dotnet build calibration-upload-server.csproj -c Release -o /app

FROM build AS publish
RUN dotnet publish calibration-upload-server.csproj -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "calibration-upload-server.dll"]

我的码头工人撰写文件:

version: '3.4'

services:
  calibration-upload-server:
image: ${DOCKER_REGISTRY}calibration-upload-server
build:
  context: .
  dockerfile: calibration-upload-server/Dockerfile
volumes:
- C:/Uploads/logs:/logs

在 Visual Studio 中构建解决方案时,docker compose 似乎能够解析文件,并且卷组如下所示:

volumes:
- C:\Uploads\logs:/logs:rw
- C:\Users\UserName\AppData\Roaming\ASP.NET\Https:/root/.aspnet/https:ro
- C:\Users\UserName\AppData\Roaming\Microsoft\UserSecrets:/root/.microsoft/usersecrets:ro

所以看起来文件被正确解析(其他两个卷来自覆盖文件)。但是当我运行解决方案时,docker run运行时没有此卷:

docker run -dt -v "C:\Users\UserName\vsdbg\vs2017u5:/remote_debugger:rw" -v "C:\Repos\calibration-upload-server\calibration-upload-server:/app" -v "C:\Users\UserName\AppData\Roaming\ASP.NET\Https:/root/.aspnet/https:ro" -v "C:\Users\UserName\AppData\Roaming\Microsoft\UserSecrets:/root/.microsoft/usersecrets:ro" -v "C:\Users\UserName\.nuget\packages\:/root/.nuget/fallbackpackages2" -v "C:\Program Files\dotnet\sdk\NuGetFallbackFolder:/root/.nuget/fallbackpackages" -e "DOTNET_USE_POLLING_FILE_WATCHER=1" -e "ASPNETCORE_ENVIRONMENT=Development" -e "ASPNETCORE_URLS=https://+:443;http://+:80" -e "ASPNETCORE_HTTPS_PORT=44396" -e "NUGET_PACKAGES=/root/.nuget/fallbackpackages2" -e "NUGET_FALLBACK_PACKAGES=/root/.nuget/fallbackpackages;/root/.nuget/fallbackpackages2" -p 55498:80 -p 44396:443 --entrypoint tail calibrationuploadserver:dev -f /dev/null

最令人沮丧的部分是这工作得很好,直到我重命名了解决方案和项目。我不知道这是否是破坏它的原因,但仍然如此。

另一件事可能是相关的,在构建时我被警告说The DOCKER_REGISTRY variable is not set. Defaulting to a blank string.

有没有办法找出错误在哪里?

标签: dockervisual-studio-2017docker-compose

解决方案


推荐阅读