如何推动由Docker-composepipe理的Docker容器到Heroku?

我目前有一个本地testing和工作的Web应用程序,包括4个docker容器:Java MVC,NodeJS,Flask和MongoDB。 我有4个Dockerfiles,每个都有一个,我使用docker-compose.yml来pipe理这些构build。

然而,现在我想推我的代码到Heroku,我阅读文档在https://devcenter.heroku.com/articles/container-registry-and-runtime 。 但是,如何在生产线上使用docker构成似乎非常模糊。 这就是它在文档上说的:

“如果你创build了一个多容器应用程序,你可以使用Docker Compose来定义你的本地开发环境,学习如何使用Docker Compose进行本地开发。

任何人都可以指导我一些如何使用Heroku的CLI将我的项目推到Heroku容器的实际代码?

更准确的heroku文件,你要做的是在这里: https : //devcenter.heroku.com/articles/container-registry-and-runtime

以上将引导您设置heroku容器插件并login到registry中。 您甚至可以在dockerfile中使用以下行将图像迁移到Dockerfile:

FROM "<insert Dockerfile tag here>" 

为了方便设置,您将使用不同的后缀命名Dockerfile,例如Dockerfile.mongo,Dockerfile.node,Dockerfile.flask和Dockerfile.javamvc。 后缀告诉heroku您的networking应用程序使用的dyno名称。 当您需要推送所有容器时,可以使用以下命令来执行此操作,只要它们都具有唯一的后缀,就会recursion地构build所有的dockerfiles:

 heroku container:push --recursive 

由于Heroku不会读取docker-compose文件,任何环境variablessetup / port exposure / etc都需要迁移到Dockerfile。 此外,因为我无法find如何在Heroku上使用容器进行持久性存储/卷挂载,所以我build议使用Heroku插件作为mongo数据库。

在Heroku上,你会看到你的应用程序作为每个Dockerfile的一个代码运行,每个代码的名字作为每个Dockerfile的后缀。