在docker-compose之后,如何只构建/更新单个Docker映像而不是所有服务?

时间:2018-09-21 13:22:30

标签: docker docker-compose

我有一个docker-compose.yml文件,其中声明了一些服务。

当我键入docker-compose up时,它们全部开始。很棒。

现在,我只想修复em之一。通常,我会docker-compose down来停止em的 ALL 。相反,我希望只是将我需要修复的一项服务...对其进行修复(构建/编译/等),然后启动该单个docker映像。

有没有一种方法可以代替此操作: -docker-compose down所有服务停止) -在我要更新的服务中构建/编译代码 -docker-compose up --build所有服务编译/构建/ ...出现问题:()

欢呼!

2 个答案:

答案 0 :(得分:1)

您重新构建映像并执行docker-compose up,它将自动检测到映像已更新并重新创建服务。在运行来自该映像的容器时,构建映像的缺点是它将留下一个无映像,因为docker不会删除该映像。您可以通过以下任一命令预先从该图像中删除容器,从而克服问题。

docker rm -vf <container-name>
docker rm -vr <container-id>

如果这样做不方便,您可以在之后删除none张图片,

docker rmi <image-id>

此外,如果您悬挂了多张none图像,则可以删除所有图像,

docker images -q --filter "dangling=true" | xargs docker rmi -f

答案 1 :(得分:1)

我们通常选择:

docker-compose stop servicename
docker-compose rm servicename

然后:

docker-compose up -d servicename