hut6 / docker-cli-utils

HutSix Docker 工具集

1.1.3 2022-01-06 01:09 UTC

This package is auto-updated.

Last update: 2024-09-06 06:59:01 UTC


README

辅助 docker 部署的工具

先决条件

composer req --dev hut6/docker-cli-utils
composer req --dev hut6/tag-release
composer req --dev deployer/dist

您需要创建一个 deploy/deployer-hosts.yml 清单文件(参照 Deployer https://deployer.org/docs/hosts.html),并列出所有用于部署的主机。

还需要一个 VERSION 文件。版本递增可以通过 tag-release 脚本来管理。只有在将秘密推送到 1Password 脚本时才需要 VERSION 文件,因为在 1Password 中的条目标题将包括版本号。它不用于其他任何目的。

您还需要一个自定义部署者配方、Dockerbuild 文件,以及每个项目的至少一个 Docker Compose 文件。示例文件可在 https://github.com/hut6/2020-docker-prod-boilerplate 找到

构建

bin/build master                                   # branch name
bin/build branch_name                              # branch name
bin/build 1.0.0                                    # tag
bin/build 042f86676a45                             # short hash
bin/build 2ba2014b133ad9feda8fc0c5843dd8dcbf2a8c00 # long hash

将使用 git 远程来决定镜像名称;如果远程是 git@github.com:hut6/docker-cli-utils.git,则 docker 镜像将被命名为 hut6/docker-cli-utils

命令参数确定要检出哪个提交,它可以是分支名称、标签或哈希值。

该参数也将用作 Docker 镜像的标签。如果构建 bin/build branch_name,则它将标记为 hut6/docker-cli-utils:branch_name。另一个例子是 bin/build 1.0.0 => hut6/docker-cli-utils:1.0.0

构建镜像时,不使用本地文件,而使用远程;在构建镜像之前,需要将更改推送到远程。

推送

与上面相同。运行 bin/push branch_namehut6/docker-cli-utils:branch_name 推送到 DockerHub。镜像需要本地存在(即需要已经构建)。

部署

对于每个主机,指定 Docker Compose 文件如下:compose_file: production.yml

bin/deploy branch_name production

第一个参数是标签(如构建和推送过程所示),第二个参数是主机,如 deploy/deployer-hosts.yml 文件所示。这将将在 production 主机上部署 hut6/docker-cli-utils:branch_name

镜像需要在 DockerHub 上存在。

秘密管理

您需要 1Password CLI 客户端 op 来推送/拉取。

https://support.1password.com/command-line/ 安装它

所需文件和目录

您需要创建一个 /secrets 目录,该目录将包含每个部署环境的一个 environment.env 文件,例如 production.envstaging.env

使用 deploy/deployer-hosts.yml 清单文件指定 1Password 中应使用哪个条目,使用 secrets_uuid 键。

向 1Password 推送

要推送从秘密目录到 1Password 的文件,请运行以下命令。

bin/secrets push production

将生产替换为正确的密钥,如您的 deploy/deployer-hosts.yml 文件所示。

您第一次运行此命令时,它会询问您需要使用哪个保险库。

您可以在更改生产秘密文件后使用相同的命令更新 1password 中的条目。

从 1Password 拉取

这将使用在 deploy/deployer-hosts.yml 中指定的 UUID 从 1password 拉取秘密文件,并将其添加到秘密目录中。

bin/secrets pull production 

更新 docker 秘密

这将将从 secrets 目录中加载秘密到指定主机的 docker 守护进程中。容器可能需要重启,但此命令不会执行此操作。

bin/secrets load production