我目前有一个本地测试和工作的Web应用程序,由4个docker容器组成:Java MVC,NodeJS,Flask和MongoDB。我有4个Dockerfiles,每个都有一个,我使用docker-compose.yml管理构建。
但是,现在我想将我的代码推送到Heroku,并在https://devcenter.heroku.com/articles/container-registry-and-runtime阅读文档。但是,如何在生产线上使用docker-compose似乎非常暧昧。这就是它在文档中所说的内容:
"如果您已创建多容器应用程序,则可以使用Docker Compose来定义本地开发环境。了解如何使用Docker Compose进行本地开发。"
任何人都可以指导我使用Heroku的CLI将我的项目推送到Heroku容器的实际代码吗?
答案 0 :(得分:6)
您想要做的更准确的heroku文档在这里: https://devcenter.heroku.com/articles/container-registry-and-runtime
以上内容将指导您设置heroku容器插件并登录注册表。您甚至可以使用dockerfile中的以下行将映像迁移到Dockerfile:
FROM "<insert Dockerfile tag here>"
要轻松设置它,您将使用不同的后缀命名Dockerfiles,例如Dockerfile.mongo,Dockerfile.node,Dockerfile.flask和Dockerfile.javamvc。后缀告诉heroku用于您的Web应用程序的dyno名称。当您需要推送所有容器时,可以使用以下命令执行此操作,只要所有dockerfiles都具有唯一的后缀,它就会递归构建所有dockerfiles:
heroku container:push --recursive
由于Heroku不读取docker-compose文件,因此需要将任何环境变量setup / port exposure / etc迁移到Dockerfile。另外,由于我无法在Heroku上找到如何使用容器进行持久存储/卷安装,我建议您为mongo数据库使用Heroku插件。
在Heroku上,您将看到您的应用程序作为每个Dockerfile的一个dyno运行,每个dyno的名称作为每个Dockerfile的后缀。
更新:
heroku container:release <your dyno name>
。答案 1 :(得分:2)
仅此问题的更新,因为最近似乎吸引了很多关注。
Heroku现在提供了一种官方支持的“ Heroku.yml”解决方案。 现在,您可以编写一个.yml文件(格式类似于docker-compose),Heroku会生成您的图像。请点击上面的链接以获取详细信息。
快乐的Heroku-ing。