使用Docker Compose构建多个镜像?

3

我有一个代码库,它构建了三个不同的镜像:

  1. powerpy-base
  2. powerpy-web
  3. powerpy-worker

powerpy-webpowerpy-worker 都使用 Dockerfile 中的 FROM 关键字继承自 powerpy-base

在项目中,我使用 Docker Compose 运行 Redis 和 RabbitMQ 容器。有没有办法告诉 Docker Compose 我想先构建基础镜像,然后再构建 web 和 worker 镜像呢?

2个回答

4

你可以使用 depends_on 来强制执行顺序,但是这个顺序也会在"运行时" (docker-compose up) 应用,这可能不正确。

如果你仅使用compose来构建镜像,那么这应该没问题。

你还可以将其拆分为两个compose文件。一个 docker-compose.build.yml 文件,其中有针对构建的 depends_on,以及一个单独的文件用于运行镜像作为服务。

这里有一个相关的问题:https://github.com/docker/compose/issues/295


1
关于运行容器: 在docker-compose v1.10之前存在一个bug,但是现在已经修复了。 https://blog.docker.com/2016/02/docker-1-10/ 引用: 启动链接的容器时会按照正确的顺序重新启动守护进程。这是一件小事,但如果你遇到过,你就会知道它有多头痛。如果你重启了一个带有链接容器的守护进程,如果链接的容器还没有运行,它们有时会无法启动。现在,引擎将尝试按照正确的顺序启动容器。
关于构建: 您需要先构建基础镜像。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接