【问题标题】:How can I structure my docker projects for easy deployment?如何构建我的 docker 项目以便于部署?
【发布时间】:2016-04-27 22:01:08
【问题描述】:

现在,我的应用程序的多个组件位于同一个文件夹中,并通过 docker-compose 链接在一起

这在开发中非常有效,但是当我想推动生产时,它有点模糊。如果我保持这种结构,我不能只使用 dockerhub 来托管我的图像,因为链接它们的 docker-compose 将丢失。如果我使用 git 来拉下我的 docker-compose,那么 dockerhub 的意义何在?为什么不直接克隆我的整个 repo 并每次运行 docker-compose up

我也可以将每个组件分别存储在单独的 github 存储库中,当推送到 master 时将它们推送到 dockerhub。然后,只需将它们从集线器与 docker compose 结合起来。这似乎也不太理想,因为必须克隆并推送到几个不同的存储库才能做出影响系统的更改。

你是怎么做到的?

【问题讨论】:

    标签: docker continuous-integration docker-compose dockerhub


    【解决方案1】:

    我有两个部分:源代码和配置文件(docker 文件、docker-compose 文件...)

    我把 Dockerfile 和 docker-compose 放在一个像你一样结构的文件夹中,并将它推送到一个 git 存储库。对于源代码(和其他数据),我必须手动管理它,使用单独的 git 存储库供源代码在每次需要更新时推送和拉取。

    小心生产服务器,只更新一小部分而不是整个服务器。

    【讨论】:

    • Git 子模块非常适合此类 repo 管理任务。
    【解决方案2】:

    查看new (still experimental) docker-app(2018 年 6 月)

    它将允许您将 docker-compose 推送到 DockerHub,并使用 dev 和 prod 之间的设置变化来启动您的应用程序(通过 docker-compose)。

    example:

    您可以基于此 Compose 文件创建应用程序包:

    $ docker-app init --single-file hello
    $ ls
    docker-compose.yml
    hello.dockerapp
    

    新的新文件hello.dockerapp 包含三个 YAML 文档:

    • 元数据
    • 撰写文件
    • 应用程序设置

    见“Sharing your application on the Hub

    您可以使用 docker-app push 将任何应用程序推送到 Hub:

    $ docker-app push --namespace myHubUser --tag latest
    

    此命令将在您的本地 Docker 守护程序上创建一个名为 myHubUser/hello.dockerapp:latest 的映像,并将其推送到 Hub。

    【讨论】:

      猜你喜欢
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-28
      相关资源
      最近更新 更多