gpt4 book ai didi

Docker 组合和外部图像多阶段构建

转载 作者:行者123 更新时间:2023-12-02 02:47:01 46 4
gpt4 key购买 nike

我使用 Docker multi-stage build ,具体来说:

Use an external image as a “stage”

When using multi-stage builds, you are not limited to copying from stages you created earlier in your Dockerfile. You can use the COPY --from instruction to copy from a separate image, either using the local image name, a tag available locally or on a Docker registry, or a tag ID. The Docker client pulls the image if necessary and copies the artifact from there. The syntax is:

在我的例子中,我有三个 Docker 文件。

一个 Dockerfile 只是定义一个图像,我将其用作构建阶段以在其他两个 Dockerfile 之间共享:

FROM ubuntu:bionic

## do some heavy computation that will result in some files that I need to share in 2 Dockerfiles

并假设我构建上面的 Dockerfile 给出:

docker build -t my-shared-build -f path/to/shared/Dockerfile .

所以现在我有一个在两个容器之间共享的 my-shared-build 图像,它们的 dockerfile 如下所示:

FROM ubuntu:bionic

# do something

COPY --from=my-shared-build some/big/folder /some/big/folder

CMD ["/my-process-one"]
FROM ubuntu:bionic

# do something

COPY --from=my-shared-build some/big/folder /some/big/folder

CMD ["/my-process-two"]

我可以构建和运行它们。

回顾一下,我目前所做的是:

1) 构建共享镜像2) 构建进程一个镜像3)构建过程二图

现在我可以运行“进程一”和“进程二”容器。

问题

现在我想用Docker Compose来自动化执行“进程一”和“进程二”。

所以问题是:我如何在 Docker Compose 中指定我需要首先构建共享图像,然后然后构建其他图像(然后运行它们容器)?

最佳答案

我认为您应该能够做到这一点。

docker 组成:

version: '3'
services:
my-shared-build:
image: my-shared-build:latest
build: my-shared-build

my-process-one:
image: my-process-one:latest
build: my-process-one
depends_on:
- my-shared-build

my-process-two:
image: my-process-two:latest
build: my-process-two
depends_on:
- my-shared-build
- my-process-one

假设您的 Dockerfile 位于子目录 my-shared-build、my-process-one、my-process-two 中,这应该构建所有 3 个图像(按顺序)

关于Docker 组合和外部图像多阶段构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54207856/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com