docker - 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.
有没有办法找出错误在哪里?
解决方案
推荐阅读
- html - 将 div 放在另一个上以在所有设备上保持相同
- python - 尝试安装 tensorflow 对象检测 API 时出错
- reactjs - 从输入中搜索时过滤掉行数据
- mysql - 如何使用 xampp 创建的 mysql 中的数据在反应中显示图像
- xml - BizTalk - 在记录的开头和结尾为带有单词分隔符的平面文件构建 XSD
- navigation - Gatsby:你如何创建一个动态导航,将当前页面标记为活动的?
- ios - 核心数据合并策略有时会删除对象
- reactjs - TypeError:在 React 中比较数组中的对象时无法读取未定义的属性“x”
- oracle-apex - Oracle APEX - 处理 Excel 数据的问题
- javascript - 在javascript中使用过滤器方法时从数组中获取所有值