现在,我的应用程序的多个组件位于使用docker-compose链接在一起的同一文件夹中
这在开发中非常有效,但是当我想要投入生产时,它有点模糊。如果我保留这个结构,我不能只使用dockerhub来托管我的图像,因为会丢失链接它们的docker-compose。如果我使用git来拉下我的docker-compose,那么dockerhub会有什么意义呢?为什么不克隆我的整个仓库并每次运行docker-compose up
?
我可以将每个组件分别存储在单独的github存储库中,当推送到master时将它们推送到dockerhub。然后,只需使用dockercompose将它们从集线器中组合起来。这似乎也不太理想,因为人们必须克隆并推送到几个不同的repos进行更改,从而影响系统。
你是怎么做到的?
答案 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
的映像,并将其推送到集线器。