Docker compose 和外部镜像多阶段构建

2024-03-12

I use Docker 多阶段构建 https://docs.docker.com/develop/develop-images/multistage-build/, 具体来说:

使用外部图像作为“舞台”

当使用多阶段构建时,您 不限于从您之前创建的阶段复制 Dockerfile。您可以使用 COPY --from 指令从 单独的图像,可以使用本地图像名称,也可以使用标签 本地或 Docker 注册表或标签 ID。 Docker 客户端拉取 如有必要,图像并从那里复制工件。语法 是:

就我而言,我有三个 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)构建流程二镜像

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

Problem

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

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


我认为你应该能够很好地做到这一点。

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 个映像(按顺序)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker compose 和外部镜像多阶段构建 的相关文章

随机推荐

  • Xcode Source Kit 将不会停止使用 Swift 崩溃[重复]

    这个问题在这里已经有答案了 我需要找到一个解决方案来解决 Swift 中超级棒的 Source Kit Crashing 错误 我读过很多堆栈溢出帖子 但似乎没有人有解决方案 如果有一行代码导致了问题 我不可能通过 50 多个源文件来找到它
  • 如何将字符串值从一个视图控制器传递到另一个视图控制器

    你好 我是目标 c 的新手 我有一个带有 h m xib 文件的登录视图控制器 成功登录后我需要转到第二页 场景是这样的 我正在访问网络服务 为了验证用户身份 我将用户名和密码发送到 Web 服务 作为回报我得到一个字符串值 根据字符串值的
  • 测量协议中的UserId、CID

    测量协议 为了识别新用户与回访用户 我们可以使用用户 ID 字段吗 即我们可以对用户名或其他用户唯一的标识符进行哈希处理 并将其与特定用户相关联 这样我们就可以有效地识别新用户与回访用户 关于 CID 的问题 CID 用于唯一标识用户的会话
  • EF6 与 Entity Framework Core:插入实体而不将主键(身份)重置为零

    EF6 插入已经具有主键值的实体可以正常工作 并向主键分配新值 EF Core 它尝试插入主键的值 但显然失败了异常 当 IDENTITY INSERT 设置为 OFF 时 无法在表 Asset 中插入标识列的显式值 我发现的解决方法是将
  • 如果没有 h3 标签,JQuery 手风琴将无法工作

    我正在尝试用 JQuery 制作手风琴 但遇到了一些麻烦 JQuery 网站显示如何创建您的手风琴内容 如下所示 div a href First header a div First content div a href Second h
  • 如何将数据访问映射到实体框架中的业务逻辑对象

    我在 ASP NET C MVC 应用程序中使用实体框架 我在数据访问层中有由 EF 生成的对象 namespace Project1 DataAccess using System using System Collections Gen
  • 如何在 jQuery Mobile 中检测设备的互联网连接

    我正在使用 HTML5 CSS3 jQuery Mobile jQuery UI ASP NET C 和一些 jQuery 插件为调查创建这个简单的移动网页 要求之一是显示一个弹出窗口 对话框 JavaScript 警报或 jQuery 移
  • 使用 Saxon 读取 XSLT 样式表中的环境变量

    我正在尝试生成一个 XML 文件 其中包含我的机器的主机名的任意元素或属性 例如
  • 通用类的通用父级

    我为此使用了一个虚构的例子 比如说 我有一个 Widget 类 例如 abstract class Widget Widget parent 现在 我的其他类将从这个 Widget 类派生 但假设我想在定义派生类型时在类中放置一些约束 以便
  • 如何在android上使用kso​​ap2调用WCF服务?

    这是我的代码 import org ksoap2 import org ksoap2 serialization import org ksoap2 transport import android app Activity import
  • 无法在PHP中的遍历预序中显示所有树

    我的数据库中有一个表 其中包含许多家谱树 id name parent id 1 grandfather NULL 2 father 1 3 uncle 1 4 son 2 5 brother 2 6 cousin s dauther 7
  • R 中随机森林的分层抽样

    我在文档中阅读了以下内容randomForest strata 用于分层抽样的 因子 变量 sampsize 要绘制的样本大小 对于分类 如果 sampsize 是一个长度为层数的向量 然后采样 按strata分层 sampsize的元素
  • 装饰器可以装饰递归函数吗?

    我想看看两种计算斐波那契数列的方法之间的时间成本差异 首先 我创建了一个装饰器 将 输出时间成本 函数添加到函数中 def time cost func def wed n start time time func n stop time
  • SQL依赖+服务代理

    我正在使用 SqlDependency 在某些表中的数据发生更改时获取通知 private void subscribeBroker using var conn new SqlConnection connString conn Open
  • 在Python中使用curses和raw_input

    在我的Python Linux控制台应用程序中 我使用curses来处理数据的显示 同时 我希望有一个输入行来输入命令 几乎是良好的 ol irssi 风格 使用默认的curses getch 我必须做大量的编码才能获得raw input函
  • 如何使 clang-format 尊重“类似表格”的代码格式

    我的代码具有按列对齐的数据或参数表 如下所示 人为的简单示例 实际代码具有更大的表 Name Size Starting val S s Dubs abc 123 X n m YZ ij q kl Name Size Starting va
  • 建议的解决方案:在分布式环境中生成唯一 ID

    我一直在浏览网络 试图找到一种解决方案 使我们能够在区域分布式环境中生成唯一的 ID 我查看了以下选项 除其他外 雪花 推特 这似乎是一个很棒的解决方案 但我只是不喜欢仅仅为了创建 ID 而必须管理另一个软件所带来的额外复杂性 现阶段缺乏文
  • Microsoft Word 中的 docx“文件已损坏”错误

    我写了一个程序 它打开docx包并更改一些
  • 使用 Java 与 MySQL 服务器的 SSL 连接

    我正在尝试使用 Java over SSL 连接到 MySQL 服务器 我收到以下异常 com mysql jdbc exceptions jdbc4 MySQLNonTransientConnectionException Cannot
  • Docker compose 和外部镜像多阶段构建

    I use Docker 多阶段构建 https docs docker com develop develop images multistage build 具体来说 使用外部图像作为 舞台 当使用多阶段构建时 您 不限于从您之前创建的