繁体   English   中英

将docker volume安装到主机路径

[英]Mount docker volume to host machine path

我需要从容器中访问主机中的测试结果文件。 我知道我需要创建一个在主机和容器之间映射的卷,如下所示,但我没有写入主机。

docker run --rm -it -v <host_directory_path>:<container_path> imagename

Dockerfile:

FROM microsoft/dotnet:2.1-sdk AS builder
WORKDIR /app
COPY ./src/MyApplication.Program/MyApplication.Program.csproj ./src/MyApplication.Program/MyApplication.Program.csproj
COPY nuget.config ./
WORKDIR ./src/MyApplication.Program/
RUN dotnet restore
WORKDIR /app
COPY ./src ./src
WORKDIR ./src/MyApplication.Program/
RUN dotnet build MyApplication.Program.csproj -c Release

FROM builder as tester
WORKDIR /app
COPY ./test/MyApplication.UnitTests/MyApplication.UnitTests.csproj ./test/MyApplication.UnitTests/MyApplication.UnitTests.csproj
WORKDIR ./test/MyApplication.UnitTests/
RUN dotnet restore
WORKDIR /app
COPY ./test ./test
WORKDIR ./test/MyApplication.UnitTests/
RUN dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura
ENTRYPOINT ["dotnet", "reportgenerator", "-reports:coverage.cobertura.xml", "-targetdir:codecoveragereports", "-reportTypes:htmlInline"]

入口处的命令工作正常。 它将输出写入MyApplication.UnitTests/codecoveragereports目录,但不写入主机目录。

我的docker run看起来如下:

docker run --rm -it -v /codecoveragereports:/app/test/MyApplication.UnitTests/codecoveragereports routethink.tests:latest

我能做错什么?

看起来像是一个权限问题。

-v /codecoveragereports:/app/***/codecoveragereports正在挂载根目录下的目录/这是危险的,你可能没有这个权限。

最好在本地挂载,比如-v $PWD/codecoveragereports:/app/***/codecoveragereports ,其中$PWD是一个等于当前工作目录的环境变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM