高级Docker和Dockerfile卷/写入理解

时间:2017-06-22 19:20:18

标签: maven docker junit dockerfile maven-failsafe-plugin

我正在开发一个maven项目,并在此项目中使用Junit运行测试。我是Docker的新手,我正在尝试编写一个生成图像的Dockerfile,该图像创建一个容器,在运行时执行测试并输出target/failsafe-reports中的XML结果(maven插件的输出文件夹,总结了Junit测试的结果)。我一直在尝试使用Dockerfile ReferenceManage 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和Dockerfiles概念?

1 个答案:

答案 0 :(得分:0)

尝试运行:

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其中&输出是否在容器内创建。如果没有生成输出文件,这应该为您提供有关卷装入或修复过程本身的线索。