使用Travis CI和Docker进行持续部署

时间:2015-10-14 18:24:49

标签: docker travis-ci continuous-deployment

在CI环境中自动部署Docker镜像的最佳方法是什么?

使用Travis CI构建一个简单的Web项目并使用Dockerfile构建相应的Docker镜像后,是否有办法自动将该映像部署到云提供程序?

现在,Dockerfile将基本映像下拉到Travis构建机器,并根据Dockerfile中的指令构建映像。此时如果构建成功,我可以将它推送到Docker Hub,虽然我没有必要将此图像保存到Docker中心,我设想将成功构建的Docker镜像部署到云提供商(IE.DigitalOcean,Linode)或AWS)并启动/运行映像。

3 个答案:

答案 0 :(得分:2)

虽然直接推送到主机似乎是理想的,但我认为它忽略了主机可能出现故障或可能需要复制的事实。

如果您直接推送到prod主机,并且该主机出现故障,则在没有重新运行整个CI管道的情况下,您无法启动另一个主机。

如果您推送到中介(集线器或docker注册表),您可以根据需要创建任意数量的主机,而无需重新运行构建。您也可以非常轻松地在新主机上恢复(初始化脚本只需拉动图像并启动)。

如果您愿意,可以在云提供商处运行自己的注册表(而不是使用集线器)。

答案 1 :(得分:1)

对于静态网站,您可能需要查看Surge

否则,您可能希望结合使用带有AWS EB的docker来查看AWS Elastic Beanstalk命令行界面(AWS EB CLI)。

对于在AWS EB中使用docker,请阅读此AWS Blog post

对于AWS EB CLI,此处摘自AWS EB仪表板侧栏

  

如果您想使用命令行来创建,管理和扩展您的   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”。

进一步阅读

答案 2 :(得分:0)

我有同样的问题。

有一个名为Watchtower的非常酷的泊坞窗图像,用于检查Docker集线器上具有相同图像标签的容器的运行版本。如果集线器上有更新,Watchtower会拉出较新的映像并重新启动正在运行的容器(保留所有env变量等)。适用于需要更新的单个容器。

注意:它真的像跑步一样简单:

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

我正在寻找相同的东西,但对于作为码头工人群的一部分而运行的容器......

相关问题