使用 Travis CI 和 Docker 进行持续部署
Continuous Deployment Using Travis CI and Docker
在 CI 环境中自动部署 Docker 映像的最佳方法是什么?
在使用 Travis CI 构建一个简单的 Web 项目并使用 Dockerfile
构建相应的 Docker 图像后,有没有办法自动将该图像部署到云提供商?
现在,Docker文件将基础镜像下载到 Travis 构建机器,并根据 Docker 文件中的说明构建镜像。此时如果构建成功,我可以将它推送到 Docker Hub,尽管我不需要将此图像保存到 Docker hub,我设想的是部署成功构建的 Docker 图像到云提供商(IE。DigitalOcean、Linode 或 AWS)和 starting/running 图像。
虽然直接推送到主机看起来很理想,但我认为它忽略了主机可能会失败或可能需要复制的事实。
如果您直接推送到生产主机,而该主机出现故障,您将无法在不重新运行整个 CI 管道的情况下启动另一个主机。
如果您推送到中介(集线器或 docker 注册表),您可以根据需要创建任意数量的主机,而无需重新 运行 构建。您还可以非常轻松地在新主机上恢复(初始化脚本可以直接拉取映像并启动)。
如果您愿意,您可以 运行 您自己在云提供商上的注册表(而不是使用集线器)。
对于静态网站,您可能需要查看 Surge。
否则,您可能需要结合使用 docker 和 AWS EB 查看 AWS Elastic Beanstalk 命令行界面 (AWS EB CLI)。
要将 docker 与 AWS EB 结合使用,请阅读此 AWS Blog post
对于 AWS EB CLI,这是 AWS EB 仪表板侧边栏的摘录
If you want to use a command line to create, manage, and scale your
Elastic Beanstalk applications, please use the Elastic Beanstalk
Command Line Interface (EB CLI). Get Started
$ mkdir HelloWorld
$ cd HelloWorld
$ eb init -p PHP
$ echo "Hello World" > index.html
$ eb create dev-env
$ eb open
To deploy updates to your applications, use ‘eb deploy’.
进一步阅读
我也有同样的问题。
有一个非常酷的 docker 镜像,名为 Watchtower,它检查 Docker 集线器上具有相同镜像标签的容器的 运行 版本。如果集线器上有更新,Watchtower 会拉取更新的图像并重新启动 运行 容器(保留所有环境变量等)。对于需要更新的单个容器非常有效。
注意:它真的很简单 运行:
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 集群的一部分...
在 CI 环境中自动部署 Docker 映像的最佳方法是什么?
在使用 Travis CI 构建一个简单的 Web 项目并使用 Dockerfile
构建相应的 Docker 图像后,有没有办法自动将该图像部署到云提供商?
现在,Docker文件将基础镜像下载到 Travis 构建机器,并根据 Docker 文件中的说明构建镜像。此时如果构建成功,我可以将它推送到 Docker Hub,尽管我不需要将此图像保存到 Docker hub,我设想的是部署成功构建的 Docker 图像到云提供商(IE。DigitalOcean、Linode 或 AWS)和 starting/running 图像。
虽然直接推送到主机看起来很理想,但我认为它忽略了主机可能会失败或可能需要复制的事实。
如果您直接推送到生产主机,而该主机出现故障,您将无法在不重新运行整个 CI 管道的情况下启动另一个主机。
如果您推送到中介(集线器或 docker 注册表),您可以根据需要创建任意数量的主机,而无需重新 运行 构建。您还可以非常轻松地在新主机上恢复(初始化脚本可以直接拉取映像并启动)。
如果您愿意,您可以 运行 您自己在云提供商上的注册表(而不是使用集线器)。
对于静态网站,您可能需要查看 Surge。
否则,您可能需要结合使用 docker 和 AWS EB 查看 AWS Elastic Beanstalk 命令行界面 (AWS EB CLI)。
要将 docker 与 AWS EB 结合使用,请阅读此 AWS Blog post
对于 AWS EB CLI,这是 AWS EB 仪表板侧边栏的摘录
If you want to use a command line to create, manage, and scale your Elastic Beanstalk applications, please use the Elastic Beanstalk Command Line Interface (EB CLI). Get Started
$ mkdir HelloWorld $ cd HelloWorld $ eb init -p PHP $ echo "Hello World" > index.html $ eb create dev-env $ eb open
To deploy updates to your applications, use ‘eb deploy’.
进一步阅读
我也有同样的问题。
有一个非常酷的 docker 镜像,名为 Watchtower,它检查 Docker 集线器上具有相同镜像标签的容器的 运行 版本。如果集线器上有更新,Watchtower 会拉取更新的图像并重新启动 运行 容器(保留所有环境变量等)。对于需要更新的单个容器非常有效。
注意:它真的很简单 运行:
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 集群的一部分...