最近,我们刚刚使用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
吗?
答案 0 :(得分:3)
您不希望在每台机器中执行git pull
- 您的直觉是正确的。
相反,您希望使用远程docker注册表(例如,作为docker hub)。
每次更改源代码(git repo)时都是正确的流程:
git pull
。docker-compose build
构建所有相关图片。docker-compose push
将所有图片(差异)推送到远程注册表。docker-compose pull
,以获取最新的更新图像。docker-compose up
启动所有容器。应在CI计算机中完成前3个步骤(例如,作为jenkins工作)。生产机器中的步骤4-5。
编辑:有一点需要考虑。我认为通过docker-compose构建很糟糕。请考虑直接按docker build -f Dockerfile -t repo/image:tag .
构建,并在docker-compose
中指定图片名称。
答案 1 :(得分:3)
我的意见是你不应该在生产机器上构建图像。因为图像可能与您期望的不同,您应该限制自己在生产机器上的操作。有了这样说,我建议:
docker-compose pull &&
docker-compose up -d
即可。我强烈建议在生产机器以外的其他机器上构建图像,并在部署之前使用一些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
堆栈以自动执行此过程,以防万一发生错误,它可能是一种生活保护程序。