【问题标题】:Continuous Deployment Using Travis CI and Docker使用 Travis CI 和 Docker 进行持续部署
【发布时间】:2016-01-12 23:40:35
【问题描述】:

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

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

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

【问题讨论】:

    标签: docker travis-ci continuous-deployment


    【解决方案1】:

    我也有同样的问题。

    有一个非常酷的 docker 镜像,名为 Watchtower,它检查 Docker hub 上具有相同镜像标签的容器的运行版本。如果集线器上有更新,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 swarm 的一部分运行的容器......

    【讨论】:

      【解决方案2】:

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

      否则,您可能需要结合使用 docker 和 AWS EB 来查看 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”。

      进一步阅读

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

        • 好的,所以我将映像推送到 docker 注册表,在此步骤中,自动安装新创建和推送的 docker 映像的最佳方法是什么?最终状态是使用新创建的 docker 镜像进行持续部署。
        • 啊,我对这部分问题真的没有很好的答案。我想你可能想要一个 crontab 在某个地方拉动,并在容器发生变化时重新启动它们。我不知道有什么工具适合那件作品。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-09
        • 1970-01-01
        相关资源
        最近更新 更多