使用Travis CI和Docker进行连续部署
在CI环境中自动部署Docker镜像的最佳方式是什么?
在使用Travis CI构build一个简单的Web项目并使用Dockerfile
构build相应的Docker镜像之后,是否有自动将该镜像部署到云提供者的方法?
现在,Dockerfile将基础镜像拖到Travis构build机器上,并根据Dockerfile中的指令构build镜像。 在这一点上,如果构build成功,我可以将其推送到Docker Hub,尽pipe我不需要将此映像保存到Docker中心,但是我认为将成功构build的Docker映像部署到云提供者(IE。DigitalOcean,Linode ,或AWS)并启动/运行映像。
直接推送到主机看似理想,但我认为它忽略了主机可能出现故障或可能需要复制的事实。
如果直接将其推送到产品主机,并且该主机closures,则无需重新启动整个CIpipe道就可以启动另一个主机。
如果您推送到中介(集线器或dockerregistry),则可以根据需要创build任意数量的主机,而无需重新运行构build。 您也可以很容易地恢复一个新的主机(初始化脚本可以拉图像,并开始)。
如果您想,您可以在云提供商上运行自己的registry(而不是使用集线器)。
对于静态网站,您可能需要查看Surge 。
否则,您可能需要结合使用docker和AWS EB来查看AWS Elastic Beanstalk命令行界面(AWS EB CLI)。
有关在AWS EB中使用docker的信息,请阅读AWS博客文章
对于AWS EB CLI,以下是AWS EB仪表板边栏的摘录
如果要使用命令行来创build,pipe理和扩展Elastic Beanstalk应用程序,请使用Elastic Beanstalk命令行界面(EB CLI)。 开始使用
$ mkdir HelloWorld $ cd HelloWorld $ eb init -p PHP $ echo "Hello World" > index.html $ eb create dev-env $ eb open
要将更新部署到您的应用程序,请使用“eb deploy”。
进一步阅读
- 安装AWS EB CLI
- EB CLI命令参考
我有这个同样的问题。
有一个很酷的Docker镜像,叫做Watchtower ,在Docker集线器上检查具有相同图像标签的容器的运行版本。 如果集线器上有更新,那么Watchtower会拉出新的镜像并重新启动正在运行的容器(保留所有的环境variables等)。 对于需要更新的单个容器工作得非常好。
注意:它的确如同跑步一样简单:
docker run -d \ --name watchtower \ -e REPO_USER="username" -e REPO_PASS="pass" -e REPO_EMAIL="email" \ -v /var/run/docker.sock:/var/run/docker.sock \ drud/watchtower container_to_watch --debug
我正在寻找同样的东西,但作为docker群的一部分运行的容器…