我有一个计划在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/

10-16 05:30