2017-06-22 40 views
1

我正在开发一个maven项目并在此项目中使用Junit运行测试。我是新来的码头工人,我正在尝试编写一个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写了一条可以实现这个目标的线。高级Docker和Dockerfile卷/写入理解

上面的行在我的项目的根目录中(在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的概念?

+0

编辑我的dockerfile是什么,我已经将问题缩小到处理写权限的问题,因为我的本地目标文件夹已从我的运行命令更改,但目标文件夹中的所有内容都未更改(在测试期间运行,目标中的文件夹被制作并销毁) – littlespice3

回答

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

+0

主机没有写出数据,但容器中的数据已更改,现在试图处理如何访问卷中的数据 – littlespice3

+0

是的,您也可以运行'docker diff test-container' from host并且应该显示所有被更改的文件。然后,您只需使用'-v'将该文件夹挂接到主机上的空文件夹,就可以获得输出数据。 – Anoop