【问题标题】:How to create docker-compose.yml file while using jib?如何在使用 jib 时创建 docker-compose.yml 文件?
【发布时间】:2020-07-06 19:35:12
【问题描述】:

我使用 jib 插件创建镜像,而 docker-compose 需要 Dockerfile。我如何将已通过 jib 制作的图像链接到我的 docker-compose,以便它可以在进程中构建我的后端?

【问题讨论】:

    标签: angular spring docker-compose dockerfile jib


    【解决方案1】:
    推荐的答案 Google Cloud

    gradle jibDockerBuild && docker-compose up 是一个合理的解决方法。您只需要在docker-compose.ymlimage: 属性(而不是build:)中设置正确的图像名称。当您的应用程序没有更改时,jibDockerBuild 命令几乎是无操作的(除非将图像推送到 Docker 守护程序所需的时间)。当您进行更改时,Jib 将构建一个新图像,docker-compose 将使用它。当然,如果您不必通过 Jib 重建镜像,单独使用 docker-compose up 就足够了,它只会使用 Docker 守护进程缓存中的当前镜像。

    另一种选择:如果您的图像很大并且您拥有不错的网络带宽,则使用gradle jib && docker pull <your image> && docker-compose up 向注册表(无论是本地还是远程)推送和拉取可能会更快。 (这是因为 Docker Engine API 与 Docker Registry API 相比功能有限;Jib 必须使用jibDockerBuild 将整个图像流式传输到 Docker 守护进程。

    【讨论】:

    • 所以我应该先用 jib 构建图像并告诉 docker-compose 使用它对吗?如您所知,它会创建 tar 文件,所以我应该立即解压缩它?
    • 不,使用jibDockerBuild,Jib 直接将图像推送到本地 Docker 引擎。它不会创建压缩包。假设你做了-Djib.to.image=example.com/foo/image。然后在你的docker-comose.yml 中,你只说image: example.com/foo/image 而没有build: .。 Docker Compose 将使用本地 Docker 引擎中的图像。如果你的 Docker 守护进程中不存在 example.com/foo/image,Docker Compose 将尝试从远程注册表下载它(并失败,因为服务器 example.com 没有图像)。
    • docker-compose.yaml文件应该放在哪里?
    • 以及如何确保命令 ./mvnw spring-boot:build-image 将获取 yaml 文件?
    • @vic Docker Compose 只是一个容器运行时平台,完全独立于您的项目、Spring Boot 或 Jib。类似于你可以在任何地方维护 Kubernetes yaml 文件,你可以在任何你喜欢的地方拥有docker-compose.yamlspring-boot:build-image 是 Spring 构建图像的方式,不使用 Jib。 spring-boot:build-image 会产生一个非常低效的图像,因此在配置 Jib 时不应使用它。请改用 Jib 的 jib:buildjib:dockerBuild
    猜你喜欢
    • 2021-03-21
    • 2022-06-15
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 2015-12-30
    • 2022-10-18
    • 2022-07-20
    • 2018-05-28
    相关资源
    最近更新 更多