我有一个计划在Dockerize中使用Java的BDD框架。我能够整体构建并运行该镜像。但是我想要的是:
要生成2个图像,请使用Image-1:整个项目(不包含功能文件)和Image-2:功能文件。
这样做的原因是:我的功能文件会经常更改。当功能文件仅发生更改时,我不想每次都安装JDK和Maven时再次创建镜像。
我期望的是-Image-1始终作为容器在后台运行,并且当功能文件发生更改时,我将构建Image-2并将其作为容器启动。这应该通过使用已经运行的具有完全依赖性的容器来触发测试。
最佳答案
如果您只想满足上述要求,那么您就是image inherit
,如下所示:
base / Dockerfile:
FROM ubuntu:16.04
# install JDK/MAVEN here
RUN xxx
立即构建基本镜像:
$ docker build -t mybase:1 .
然后,对于您的应用程序,使用以下基本图像:
应用程序/ Dockerfile:
FROM mybase:1
# add new feature files here
ADD ... ...
每次更改功能文件时,您都可以重建应用程序Dockerfile并在此新构建的镜像上运行容器。但是,由于
JDK/MAVEN
在另一个已在其中构建的基本镜像(mybase:1
)中,因此不会再次构建它们。关于docker - Docker Image使用另一个镜像运行测试用例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57793014/