【问题标题】:Correct approach in deploying stack to Docker for AWS将堆栈部署到 Docker for AWS 的正确方法
【发布时间】:2017-09-05 08:42:15
【问题描述】:
我正在尝试将基于 docker-compose 的堆栈部署到 Docker for AWS(通过 AWS CloudFormation 创建)。
我的 compose YAML 文件在 Git 存储库和私有注册表 (Gitlab) 中的 Docker 映像中进行管理。
使用 Manager 部署服务的正确方法是什么?
我尝试了(但都失败了)几种方法:
- 无法通过 Docker API 使用本地 Docker 客户端,因为 AWS 管理器节点的 Docker 未打开 2375 端口。
- 无法将 compose YAML 和环境文件直接同步到管理器节点,因为
rsync 未安装在 Amazon Docker AMI 上。
- 从 Gitlab 卷曲文件似乎是一种非常不方便的方式。
谢谢
【问题讨论】:
标签:
amazon-web-services
docker
docker-compose
docker-swarm-mode
【解决方案1】:
找到了一种或多或少正确的方法(根据 Swarm 文档中的一些评论):
创建到管理器的 SSH 隧道:
$ ssh -NL localhost:2374:/var/run/docker.sock docker@<manager ip> &
在本地运行一切
$ docker -H localhost:2374 info
或定义
export DOCKER_HOST=localhost:2374
如果您在 Swarm 管理器上运行,请像您一样使用 docker
$ docker info
【解决方案2】:
在我看来,您可以尝试两种选择
- 使用 Jenkins,然后有一个名为 publish over SSH 的插件。您可以使用此插件发送您的撰写文件,然后运行“docker stack deploy”之类的命令。More description can be found here
- 您可以使用 Docker 云将您的 swarm 带到您的本地终端,类似于您已经完成的操作。关注这个link
第一种方法要好得多,因为您已经自动化了部署,现在您可以安排部署,在单击按钮时运行它,甚至在提交时运行它。
希望对你有帮助!!