高级 Docker 和 Docker 文件 Volume/writeout 理解
High Level Docker and Dockerfile Volume/writeout understanding
我正在开发一个 Maven 项目,运行正在该项目中使用 Junit 进行测试。我是 docker 的新手,我正在尝试编写一个生成图像的 Dockerfile,该图像创建一个容器,当 运行 时,执行测试并输出 XML 结果 target/failsafe-reports
(汇总 Junit 测试结果的 Maven 插件的输出文件夹)。我一直在尝试使用像 Dockerfile Reference and Manage Data in Containers 这样的链接。我的导师写了一行代码,使用 docker run -it --rm --name containerName -v "$PWD":/usr/src/tests -v /Users/theUser/.m2:/root/.m2 -w /usr/src/tests maven:3.5-alpine mvn clean verify
.
实现了这一点
上面一行是在我项目的根目录下调用的(在pom和Dockerfile所在的位置)所以$PWD
指的是我项目的根目录。
我的问题是这些工作中有多少可以在 Dockerfile 中自动完成?在我尝试使用和 运行 一个 Dockerfile 时,我无法在拥有当前 Dockerfile 时写出任何内容。
FROM maven:3.5-alpine
COPY ["./", "/usr/local/tests"]
VOLUME /usr/local/tests/target/failsafe-reports
ENTRYPOINT mvn -f /usr/local/tests/pom.xml verify
我用
docker build . -t imageName
并创建容器
docker run -it --rm --name test-container -v "$PWD":/usr/local/tests -v /Users/theUser/.m2:/root/.m2 imageName
这似乎 运行 我的测试,但没有将结果写入我的本地文件系统。我缺少 docker 和 Dockerfile 的什么概念?
尝试 运行宁只是:
docker run -d --name test-container -v $PWD:/usr/local/tests -v /Users/theUser/.m2:/root/.m2 imageName
然后检查主机的本地当前文件夹 (pwd) 是否已创建输出。
如果没有,则使用 shell 进入容器:
docker exec -it test-container sh
现在您应该在提示符下,尝试 运行 ls -l
或查看 find
输出是否在容器内创建。如果它没有生成输出文件,那应该会给你一些线索,告诉你要安装什么卷或修复进程本身。
我正在开发一个 Maven 项目,运行正在该项目中使用 Junit 进行测试。我是 docker 的新手,我正在尝试编写一个生成图像的 Dockerfile,该图像创建一个容器,当 运行 时,执行测试并输出 XML 结果 target/failsafe-reports
(汇总 Junit 测试结果的 Maven 插件的输出文件夹)。我一直在尝试使用像 Dockerfile Reference and Manage Data in Containers 这样的链接。我的导师写了一行代码,使用 docker run -it --rm --name containerName -v "$PWD":/usr/src/tests -v /Users/theUser/.m2:/root/.m2 -w /usr/src/tests maven:3.5-alpine mvn clean verify
.
上面一行是在我项目的根目录下调用的(在pom和Dockerfile所在的位置)所以$PWD
指的是我项目的根目录。
我的问题是这些工作中有多少可以在 Dockerfile 中自动完成?在我尝试使用和 运行 一个 Dockerfile 时,我无法在拥有当前 Dockerfile 时写出任何内容。
FROM maven:3.5-alpine
COPY ["./", "/usr/local/tests"]
VOLUME /usr/local/tests/target/failsafe-reports
ENTRYPOINT mvn -f /usr/local/tests/pom.xml verify
我用
docker build . -t imageName
并创建容器
docker run -it --rm --name test-container -v "$PWD":/usr/local/tests -v /Users/theUser/.m2:/root/.m2 imageName
这似乎 运行 我的测试,但没有将结果写入我的本地文件系统。我缺少 docker 和 Dockerfile 的什么概念?
尝试 运行宁只是:
docker run -d --name test-container -v $PWD:/usr/local/tests -v /Users/theUser/.m2:/root/.m2 imageName
然后检查主机的本地当前文件夹 (pwd) 是否已创建输出。
如果没有,则使用 shell 进入容器:
docker exec -it test-container sh
现在您应该在提示符下,尝试 运行 ls -l
或查看 find
输出是否在容器内创建。如果它没有生成输出文件,那应该会给你一些线索,告诉你要安装什么卷或修复进程本身。