为什么?
我正在尝试为在 Heroku 上运行 docker-compose 创建一个通用解决方案。我想通过使用 Heroku Button 部署来制作一键式部署解决方案。这样,用户不需要任何关于 git、Heroku cli 和 docker 的知识。
问题。
Docker 和 docker 守护进程仅在我设置stack
为container
. 有一些构建包可以为您提供 docker 和 docker-compose CLI,但如果没有 docker 守护程序,您将无法运行 docker 映像。所以buildpacks不会工作。设置为我可以使用文件
(文章)。在那里我定义了我的流程。(它取代了。如果我仍然将 a 添加到我的项目中,它将什么都不做。)
我还可以在那里定义一个来构建我的 docker 映像。
但是,当我运行 docker 映像时,会弹出以下错误: stack
container
heroku.yml
Procfile
Procfile
Dockerfile
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
并且问题仍然存在。此外,heroku 文章说“不支持卷安装。dyno 的文件系统是短暂的。”
在 Heroku 上可以运行 docker 镜像。我正在努力的是在 docker 映像中运行一个 docker。
通过挂载在 docker 映像中运行 docker 在我的 VPS 上运行良好,/var/run/docker.sock
但这不能(?)在 Heroku 上完成。
最后一句话:我正在努力使这项工作成为可能,以便其他人可以轻松地部署软件解决方案,即使他们不熟悉 git、heroku cli 和 docker。