git pull,docker-compose build和docker-compose up -d是在空机器上部署完整解决方案的好方法

时间:2018-02-10 13:51:45

标签: docker docker-compose

最近,我们刚刚使用Docker完成了Web应用程序解决方案。

https://github.com/yccheok/celery-hello-world/tree/nginx(实际解决方案托管在私有存储库中。此示例只是快速浏览一下我们的项目结构如何)

我们计划在部署上购买1台空Linux机器。我们可能会在未来购买更多的机器,但目前只有当前的流量,1台机器就足够了。

我在单个空机器上部署的计划是

git pull <from private code repository>
docker-compose build
docker-compose up -d

由于我们将在不久的将来部署到多台机器,我想知道,这是将docker应用程序部署到新机器中的常见做法吗?

我们可以使用https://hub.docker.com/中的任何内容,而不需要我们在部署阶段执行git pull吗?

3 个答案:

答案 0 :(得分:3)

您不希望在每台机器中执行git pull - 您的直觉是正确的。

相反,您希望使用远程docker注册表(例如,作为docker hub)。

每次更改源代码(git repo)时都是正确的流程:

    来自所有相关回购的
  1. git pull
  2. docker-compose build构建所有相关图片。
  3. docker-compose push将所有图片(差异)推送到远程注册表。
  4. 生产机器中的
  5. docker-compose pull,以获取最新的更新图像。
  6. docker-compose up启动所有容器。
  7. 应在CI计算机中完成前3个步骤(例如,作为jenkins工作)。生产机器中的步骤4-5。

    编辑:有一点需要考虑。我认为通过docker-compose构建很糟糕。请考虑直接按docker build -f Dockerfile -t repo/image:tag .构建,并在docker-compose中指定图片名称。

答案 1 :(得分:3)

我的意见是你不应该在生产机器上构建图像。因为图像可能与您期望的不同,您应该限制自己在生产机器上的操作。有了这样说,我建议:

  1. 更新本地计算机上的代码(开发)
  2. 当你将代码推送到git时,你应该使用一些软件来构建 你推动的图像。例如Gitlab-CI(连续 整合工具)
  3. gitlab-ci将构建图像,然后它可以对其进行一些测试 图像,然后将其部署到生产(此构建映像)
  4. 在您的生产机器上,只需执行docker-compose pull && docker-compose up -d即可。
  5. 我强烈建议在生产机器以外的其他机器上构建图像,并在部署之前使用一些CI工具测试图像。例如https://docs.gitlab.com/ce/ci/README.html

答案 2 :(得分:2)

将它部署在新机器上或者反过来就可以了。 最好的方法是在https://hub.docker.com/上制作一个私人仓库并将图像推送到那里。

构建和发送图像

  • git pull
  • docker build
  • docker login
  • docker push repo/image

拉出已发货的图片并进行部署

    服务器上的
  • docker login
  • docker pull repo/image
  • docker-compose up -d

虽然我建议您使用kubernetes查看容器调度并使用CI/CD设置jenkins堆栈以自动执行此过程,以防万一发生错误,它可能是一种生活保护程序。