【发布时间】:2019-09-11 18:58:25
【问题描述】:
我的 DevOps 之旅才刚刚开始,有些事情对我来说仍然很难理解。我目前的情况是这样的:
我有一个非常简单的 dockerized 应用程序(只有一个端点,没有状态)。我目前使用如下部署脚本将其部署到一台服务器:
#!/usr/bin/env bash
# build docker image
docker build -t my/image .
# save docker image (to tmp)
docker save -o /tmp/my-image.tar my/image
# upload docker image
scp /tmp/my-image.tar user@xxx.xxx.xxx.xxx:~/
# load docker container
ssh -t user@xxx.xxx.xxx.xxx "sudo docker load -i /tmp/my-image.tar"
# stop docker container on remote host
ssh -t user@xxx.xxx.xxx.xxx "sudo docker stop image"
# start docker container
ssh -t user@xxx.xxx.xxx.xxx "sudo docker run -d --rm -p 8081:8081 --name myimage --restart always --env-file ~/.env.prod my/image"
现在我想为服务构建一个适当的自动化 CI/CD 管道。它应该可以部署到不同的环境。我想运行自动化测试。等等。
我研究了一下,发现 Codeship (Pro) 似乎是 dockerized 应用程序的不错选择。但我似乎找不到一个很好的教程来解释我的(简单?)用例足够详细的我可以实现它。
这是我目前发现的:
可以通过 SSH 在远程主机上执行部署。但是本教程只解释了如何移动文件,而不是容器。 [1]
看来 Docker Swarm 是我可以使用的东西,但本教程没有解释如何将 Codeship 指向运行 docker swarm [2] 的远程主机
我可以尝试推送到 (Docker) 注册表,然后在远程主机上启动 docker 以拉取映像并运行它。但不知何故,这感觉不像是最佳实践解决方案。还是我错了?
欢迎任何帮助和提示!
[1]https://documentation.codeship.com/pro/continuous-deployment/ssh-deploy/
[2]https://documentation.codeship.com/pro/continuous-deployment/docker-swarm/
【问题讨论】:
标签: docker deployment devops docker-swarm codeship