【问题标题】:How to create multiple containers with dependencies using Google Cloud Builder如何使用 Google Cloud Builder 创建多个具有依赖项的容器
【发布时间】:2017-05-03 21:49:20
【问题描述】:

我正在为我的应用程序创建一个cloudbuild.yaml 文件寻求帮助。我的应用程序有一个从phython:2-onbuild 派生的基本映像,然后是从该基本映像派生的两个附加映像。我的项目中每个都有三个单独的Dockerfiles。有没有人可以指出我这样做的例子?

例如,我的基础镜像Dockerfile 如下所示:

FROM python:2-onbuild
# This will execute pip install requirements.txt and get all required python packages installed
# It will also ensure the current directly, minus anything in .dockerignore is copied over to the image
# The web server image and the worker image can then simply inherit from this.

随后,我创建了一个 Web 服务器映像和一个工作器映像。该工作人员旨在作为CronJob 运行。

我的网络服务器Dockerfile 是这样的:

FROM myapp-base

RUN chmod +x ./main_runner.sh
RUN chmod +w static/login.html
RUN chmod +w static/index.html
CMD ./main_runner.sh

我的工人Dockerfile 是:

FROM myapp-base

RUN chmod +x worker_runner.sh
CMD python ./run_worker.py

目前,我的本地 docker-compose.yaml 通过创建 myapp-base 图像并通过该名称使其可用,以便其他图像可以从中派生,将它们联系在一起。云构建中的等价物是什么?

【问题讨论】:

    标签: google-cloud-platform google-container-registry


    【解决方案1】:

    This example,通过我们的开源“docker”构建步骤,从 3 个不同的 Dockerfile 创建 3 个不同的图像。这就是你要找的吗?

    【讨论】:

    • 谢谢大卫!我正在检查它。看起来很有希望。
    • 大卫,我希望创建一个基本映像,然后创建其他两种派生自它的容器。云构建的结构似乎要求运行几个步骤,然后最终推送图像。我想在步骤 1 中推送一张图片,然后通过拉取最近推送的图片来创建接下来的几张图片。不确定这是否包括在内...
    • @Raj 这在单个构建中目前并不容易。您可以使用 docker builder 在构建步骤中运行“docker push”,但您无需在基于基础镜像构建镜像之前推送基础镜像。简单地使用第一个图像作为其 FROM 构建以后的图像将使用您刚刚构建的那个图像。然后,您可以在构建结束时推送所有三个图像。
    • 谢谢@JasonHall。这有帮助。只要云构建可以访问它们,我就不需要在构建其余部分之前推送我的基本映像。我想为我的本地构建和云构建使用相同的Dockerfile。在这种情况下,我如何标记和引用我的基本图像?我假设我必须将其标记为 gcr.io/xxx 某事。这对本地和云端都有效吗?
    • 是的,这会起作用——只需在 Dockerfile 的 FROM 指令中引用本地图像,就像在后续构建步骤中按名称引用它一样。
    猜你喜欢
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多