Coolify logoCoolify

GitHub Actions

GitHub Actions 允许你将应用程序构建为 Docker 镜像并自动部署到 Coolify。

GitHub Actions 为你的应用部署提供了更大的灵活性,因为你可以在特定分支的提交或 GitHub 上的发布等事件触发工作流。你还可以将检查和测试集成到 CI/CD 管道中,确保在所有验证通过后,新版本才部署到 Coolify。

流程概览

设置 GitHub Actions 以构建并发布应用的 Docker 镜像到容器注册表(例如 GHCR 或 Docker Hub),然后调用 Coolify 的 API 使用推送到注册表的最新镜像重新部署你的应用。

参考此示例仓库及其工作流文件

示例数据

以下数据在本指南中作为示例使用。请按照步骤操作时将其替换为你的实际数据:

  • Docker 镜像: shadowarcanist/tasklytics:latest
  • 注册表: ghcr.io
  • 分支: main

1. 选择合适的部署类型

使用 GitHub Actions,在 GitHub 运行器上将你的应用程序构建为 Docker 镜像并推送到容器注册表。选择支持预构建 Docker 镜像的部署类型。

对于基于 Git 的应用程序,使用 Docker Compose 作为构建包。在你的 compose 文件中,拉取预构建镜像而不是构建它:

services:
  web:
    # 旧:
    # build:
    #   context: .
    #   dockerfile: Dockerfile

    # 新:
    image: ghcr.io/shadowarcanist/tasklytics:latest
    ports:
      - "8080:8080"

对于基于 Docker 的应用程序,使用镜像名称如 ghcr.io/shadowarcanist/tasklytics:latest,以便 Docker 拉取预构建镜像。

2. 启用 Coolify API

  1. 进入 Coolify 中的“设置”页面。
  2. 点击“配置”选项卡。
  3. 点击“高级”。
  4. 勾选“API 访问”选项。

3. 创建 Coolify API 令牌

  1. 进入 Coolify 中的“密钥与令牌”页面。
  2. 点击“API 令牌”选项卡。
  3. 勾选令牌权限下的“部署”选项。
  4. 为你的 API 令牌命名。
  5. 点击“创建”按钮。
  6. 复制并保存生成的 API 令牌到安全的地方(稍后需要用到)。

4. 获取 Coolify Webhook URL

  1. 打开你的应用程序配置页面。
  2. 进入“Webhook”页面。
  3. 复制并保存“部署 Webhook”URL 到安全的地方(稍后需要用到)。

5. 设置仓库密钥

  1. 进入你的 GitHub 仓库设置。
  2. 点击侧边栏中的“Actions”(在“Secrets and variables”下)。
  3. 点击“新建仓库密钥”。
  1. 输入 COOLIFY_WEBHOOK 作为名称。
  2. 输入 Coolify 部署 webhook URL 作为密钥(来自第 4 步)。
  3. 点击“添加密钥”按钮。
  1. 点击“新建仓库密钥”。
  1. 输入 COOLIFY_TOKEN 作为名称。
  2. 输入 Coolify API 令牌作为密钥(来自第 3 步)。
  3. 点击“添加密钥”按钮。

6. 设置 GitHub 工作流

  1. 在你的仓库的 .github/workflows 目录中创建一个新的工作流文件(以 .yml.yaml 扩展名命名)。
  2. 使用以下工作流内容作为起点:
name: Build and Deploy
on:
  push:
    branches: ["main"]  # 在推送到 main 分支时触发
env:
  REGISTRY: ghcr.io
  IMAGE_NAME: "andrasbacsai/github-actions-with-coolify"

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    steps:
      - uses: actions/checkout@v3
      - name: Login to registry
        uses: docker/login-action@v2
        with:
          registry: ${{ env.REGISTRY }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - name: Build and push image
        uses: docker/build-push-action@v4
        with:
          context: .
          file: Dockerfile
          platforms: linux/amd64
          push: true
          tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
      - name: Deploy to Coolify
        run: |
          curl --request GET '${{ secrets.COOLIFY_WEBHOOK }}' --header 'Authorization: Bearer ${{ secrets.COOLIFY_TOKEN }}'

此工作流构建 Docker 镜像,使用 latest 标签将其推送到 ghcr.io,并通过 API 触发 Coolify 中的重新部署。

重要

上述工作流仅用于展示流程如何工作的示例。请根据你的 CI/CD 需求进行调整。

确保 部署到 Coolify 步骤在所有检查和测试之后运行,这样它只会在之前的所有内容通过时才执行。

7. 与容器注册表进行身份验证

如果推送到私有注册表,请在你的服务器上对其进行身份验证,以便它可以拉取镜像。

在你的服务器终端上运行以下命令之一(根据注册表):

  • Docker Hub: docker login
  • GitHub Container Registry (GHCR): echo $GH_TOKEN | docker login ghcr.io -u $USERNAME --password-stdin

对于其他注册表,请参阅其文档。

就这样!

On this page