我正在开发一个maven项目,并在此项目中使用Junit运行测试。我是Docker的新手,我正在尝试编写一个生成图像的Dockerfile,该图像创建一个容器,在运行时执行测试并输出target/failsafe-reports
中的XML结果(maven插件的输出文件夹,总结了Junit测试的结果)。我一直在尝试使用Dockerfile Reference和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和Dockerfiles概念?
答案 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
其中&输出是否在容器内创建。如果没有生成输出文件,这应该为您提供有关卷装入或修复过程本身的线索。