Portainer 从 GitHub 仓库拉取 Compose 配置文件

date
Oct 18, 2022
slug
portainer-pull-compose-config-from-github
status
Published
tags
Docker
Tools
summary
Portainer 支持自动从 GitHub 仓库拉取 Docker Compose 配置文件, 这给集中化管理 Docker Compose 并进行版本管理提供了很多便利
type
Post
创建 Stack 时, Portainer 既支持在 WebUI 编辑, 也支持从 GitHub 拉取. 前者虽然更简单, 但是后者支持将配置文件集中化管理, 并进行版本控制. 此外, Portainer 还支持从 GitHub 仓库拉取更新, 从而自动化 CI/CD 流程.

获取 PAT

如果要从私有仓库拉取配置, 需要进行 GitHub 帐号认证. 如果你使用的是公开仓库可以跳过这一步.
Portainer 通过 PAT (Personal Access Token) 来进行 GitHub 帐号认证. 这种方式虽然麻烦了点, 但是对权限的管控更细腻, 相对更安全.
生成 PAT 的方法参考:

配置认证

在 Portainer 新建 Stack 界面中, 选中 Authentication, 其中 Username 填写你的 GitHub 用户名, PAT 填写刚才生成的 PAT 即可.

更新方式

Portainer 支持两种更新方式: 轮询和 Webhook.
前者顾名思义, 定时检查是否有更新并拉取最新版本的配置文件; 后者则通过 GitHub Webhook 订阅仓库事件 (例如 Push 操作). 仓库操作触发 Webhook 向 Portainer 发送消息, 后者从 GitHub 拉取最新配置.
轮询方式配置起来最简单, 根据自己的使用需求设置好轮询间隔即可.
Webhook 方式需要一些额外的配置.
首先在 Portainer 中选择 Webhook 之后会出现一个 URL, 该 URL 稍后将用于配置 GitHub Webhook.
在 GitHub 仓库中选择 Settings - Webhooks 并添加 Webhook. 其中 URL 部分填填写刚才从 Portainer 获取的 URL 即可.
需要注意的是, GitHub 限制每个仓库只能添加 20 个 Webhook. 如果你有很多服务, 建议放到不同仓库中存储或者使用另外的推送服务.
Docker Hub 也支持配置 Webhook, 如有需求可以配置 Docker Hub 的 Webhook, 以便有新镜像推送时 Portainer 能自动拉取新镜像并部署.
参考:
 

© Richard Wang 2021 - 2023