作者:mobiledu2502855777 | 来源:互联网 | 2023-01-11 18:49
我目前有一个本地测试和工作的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容器的实际代码吗?
1> eliotn..:
您正在寻找的更准确的heroku文档是:https:
//devcenter.heroku.com/articles/container-registry-and-runtime
以上将指导您设置heroku容器插件并登录到注册表.您甚至可以使用dockerfile中的以下行将映像迁移到Dockerfile:
FROM ""
要轻松设置它,您将使用不同的后缀命名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的后缀.
更新:
特拉维斯提出了一个很好的观点.确保在Dockerfile中有一个CMD语句,否则heroku将抛出错误.
Yesterdayeroku最近还为该过程添加了一个步骤,您需要为heroku container:release
要更新的每个dyno 运行.