如何正确重启Docker容器以进行部署?

问题描述 投票:0回答:1

我正在创建一个脚本,我将在每次推送后使用GitHub webhook。现在在这个脚本中我的部署看起来像这样:

cd directory/to/docker-compose
git pull
docker-compose up --build -d --force-recreate

因此,每当我推动掌握时,我应该执行一个部署脚本,从GitHub获取更改并使用代码更改重新启动Docker容器。

如果这是正确的方法,有人可以确认或给我一些提示吗?

docker deployment docker-compose
1个回答
1
投票

您的部署过程根本不应涉及Git。执行此操作的标准方法是:

  1. 让您的CI系统运行docker build以从每次提交构建映像。使用日期戳,源代码控制标记,源代码控制更改ID或其他内容(或所有这些;但唯一的东西,而不是latest)标记每个图像。
  2. docker push构建的图像到一些中央注册表(Docker Hub,Amazon ECR,Google GCR,自托管的东西,......)。
  3. 更改docker-compose.yml中的图像标记并重新运行docker-compose up。撰写将注意到图像已更改,停止旧容器,拉出更改的图像,然后开始新的图像。

在最后一步中注意image:标签支持environment variable expansion,所以你的docker-compose.yml可以说:

version: '3'
services:
  one:
    image: "myorg/service-one:${SERVICE_ONE_TAG:-latest}"

如果未设置环境变量,将使用latest,但您的CI / CD系统可以设置环境变量以获得不同的东西。

(如果转移到Kubernetes,这种方法也很重要:您通常没有对节点的直接登录访问权限,因此您无法将源代码或资产提取到主机上;您必须在每台主机上手动执行此操作;并且部署规范的更改是系统实际进行更改的关键。如果您现在采用此设置,然后转移到Kubernetes,您将免费获得零停机时间滚动升级系统。)

© www.soinside.com 2019 - 2024. All rights reserved.