如何在Heroku上运行Docker中的Docker?

问题描述 投票:0回答:1

为什么? 我正在尝试创建一个在Heroku上运行docker-compose的通用解决方案。我想通过使用Heroku Button部署来制作一键式部署解决方案。这样,用户不需要任何git,Heroku cli和docker的知识。

问题。 Docker和docker守护程序仅在我将stack设置为container时可用。有一些buildpacks可以为您提供docker和docker-compose CLI,但是如果没有docker守护程序,您将无法运行docker镜像。所以buildpacks不起作用。 随着stack设置为container我可以使用文件heroku.ymlarticle)。在那里我定义了我的流程。 (它取代了Procfile。如果我仍然在我的项目中添加Procfile它将什么都不做。) 我还可以在那里定义一个Dockerfile来构建我的docker镜像。 但是当我运行docker镜像时会弹出以下错误:

2019-02-28T15:32:48.462101+00:00 app[worker.1]: Couldn't connect to Docker daemon at http+docker://localhost - is it running?
2019-02-28T15:32:48.462119+00:00 app[worker.1]: 
2019-02-28T15:32:48.462122+00:00 app[worker.1]: If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

问题是Docker守护程序未运行的Docker容器内部。解决这个问题的方法是安装它: docker run -v /var/run/docker.sock:/var/run/docker.sock ... 因为你不能使用Procfile我无法运行该命令。 (见上面heroku.yml取代Procfile。)如果我使用的是buildpack,我可以使用Procfile但是docker守护进程不会运行.....

我尝试在VOLUME中定义一个Dockerfile并且问题仍然存在。此外,一篇文章称"Volume mounting is not supported. The filesystem of the dyno is ephemeral."

在Heroku上可以运行泊坞窗图像。我正在努力的是在docker图像中运行一个docker。 通过安装/var/run/docker.sock在docker镜像中运行docker在我的VPS上工作正常,但这不能(?)在Heroku上完成。

最后一句话:我正在努力使这项工作能够让其他人轻松部署软件解决方案,即使他们对git,heroku cli和docker不太满意。

docker heroku daemon dind
1个回答
0
投票

我做的是将它安装在我的dockerfile中,如下所示:

RUN curl -fsSLO https://get.docker.com/builds/Linux/x86_64/docker-17.04.0-ce.tgz \
  && tar xzvf docker-17.04.0-ce.tgz \
  && mv docker/docker /usr/local/bin \
  && rm -r docker docker-17.04.0-ce.tgz

然后在args部分中运行docker我添加了这个:

args '--user root -v /var/run/docker.sock:/var/run/docker.sock'

有关其工作原理的进一步说明,请参阅:stackoverflow.com/q/27879713/354577这对我来说效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.