如何构建我的docker项目以便于部署?

时间:2016-04-27 22:01:08

标签: docker continuous-integration docker-compose dockerhub

现在,我的应用程序的多个组件位于使用docker-compose链接在一起的同一文件夹中 enter image description here

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

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

你是怎么做到的?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分: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将任何应用程序推送到集线器:

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

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