git pull、docker compose build和docker compose up-d是在空机器上部署完整解决方案的好方法吗
最近,我们刚刚使用Docker完成了web应用程序解决方案 (实际的解决方案托管在私有存储库中。本例只是简单介绍一下我们的项目结构) 我们计划在部署时购买一台空的Linux机器。我们可能会在未来购买更多的机器,但根据目前的流量,1台机器就足够了 我在单个空机器上的部署计划是git pull、docker compose build和docker compose up-d是在空机器上部署完整解决方案的好方法吗,docker,docker-compose,Docker,Docker Compose,最近,我们刚刚使用Docker完成了web应用程序解决方案 (实际的解决方案托管在私有存储库中。本例只是简单介绍一下我们的项目结构) 我们计划在部署时购买一台空的Linux机器。我们可能会在未来购买更多的机器,但根据目前的流量,1台机器就足够了 我在单个空机器上的部署计划是 git pull <from private code repository> docker-compose build docker-compose up -d git拉 docker组合构建 docker
git pull <from private code repository>
docker-compose build
docker-compose up -d
git拉
docker组合构建
docker compose up-d
由于我们将在不久的将来部署到多台机器上,我想知道,将docker应用程序部署到一台新的空机器上是一种常见的做法吗
在部署阶段,我们是否可以从中利用任何东西,而无需执行
git pull
您不想在每台机器上执行git pull
——您的直觉是正确的
相反,您希望使用远程docker注册表(例如docker hub)
因此,每次更改源代码(git repo)时,正确的流程是:
git从所有相关回购中提取
docker compose build
生成所有相关图像docker compose push
将所有图像(差异)推送到远程注册表docker compose pull
在您的生产机器中,以获取最新更新的图像docker组合
启动所有容器<强>编辑< /强>:要考虑的一件事。我认为通过docker compose构建是不好的。直接考虑使用代码> DOCK-Buff-F Doc文件-T RePo/图像:TAG。< /COD> >在代码> DOCKER撰写< /COD>只指定图像名。< /P> < P>在一台新机器上或其他方式部署它将是很好的。 最好的办法是进行私人回购,并将您的图像推送到那里
建立和运输形象git pull
docker构建
docker登录
docker推式回购/image
docker登录服务器上的
docker pull repo/image
docker compose up-d
虽然我建议您使用
kubernetes
查看集装箱调度,并使用jenkins
设置CI/CD
堆栈以实现此过程的自动化,但如果发生了不好的情况,它可能是一个救命稻草。我的意见是,您不应该在生产机器上构建映像。因为图像可能与您预期的不同,您应该限制自己在生产机器上的操作。。话虽如此,我建议:
docker编写拉&&
docker编写up-d
,就是这样我强烈建议在生产机器以外的其他机器上构建映像,并在部署之前使用一些CI工具测试映像。例如对于步骤4,我如何知道应该将哪些服务拉到空机器?我需要手动操作吗?不,你不需要手动操作。这就是docker compose pull为您所做的。将您的每个图像与远程注册表中现有的图像进行比较是非常困难的,如果有更新的版本,他将提取图像差异并为您进行更新。我的意思是,最初,我的生产机器是完全空的。My docker hub包含10个服务的10个图像。所以,当我第一次在生产机器上运行时,我需要运行
docker compose pull service0
,docker compose pull service1
?不需要。您不必指定每个服务。docker compose pull
命令将为您执行此操作。它将比较您的docker compose.yml
文件中指定的每个图像,并验证它是否是最新的。