本文发表于 189 天前,其中的信息可能已经事过境迁
文章摘要
加载中...|
此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结 投诉

前期准备

在使用自动部署之前,确保你对 Docker 和 GitHub Actions 有一定的了解。

Docker 是什么

Docker 是一种容器化平台,允许开发者将应用程序及其依赖项打包到一个容器中,确保在不同环境中的一致性运行。

GitHub Actions 是什么

GitHub Actions 是 GitHub 提供的持续集成和持续部署工具,可用于自动化软件开发工作流程。

注册账号

如果你已有 GitHub 和 DockerHub 的账号,你可以跳过这一步

DockerHub 注册一个账号,或者使用现有的 GitHub 账号进行登录。注册后,请记录下你的 usernamepassword,这将用于后续编写 GitHub Actions 工作流。

另外,除了 DockerHubGitHub 也有一个类似的服务,叫做 GitHub Container Registry,简称 GCR。本文也将介绍如何同时推送 Docker ImageDockerHubGCR

准备信息

现在,你已经为自动化部署的下一步做好了充分的准备。接下来,将深入介绍如何配置 GitHub Actions Workflow 文件以实现自动化部署

仓库操作

新建机密

在你的 GitHub 仓库中,点击 Settings,然后点击左侧导航栏的 Secrets and variables 类别下的 Actions 选项

一个填写示例一个填写示例

然后分别新增下面的内容

  • DOCKER_USERNAME: 你的 DockerHub 用户名
  • DOCKER_PASSWORD: 你的 DockerHub 密码

添加成功示例添加成功示例

创建工作流文件

然后在仓库中新增一个 .github/workflows/docker.yml 文件,内容如下

yml
# 工作流名称
name: Publish Docker image
# 触发工作流的事件,这里表示发布新版本时触发
on:
  release:
    types: [published]
# 工作流程
jobs:
  push_to_registry:
    name: Push Docker image to multiple registries
    # 工作流运行的机器环境
    runs-on:
      ubuntu-latest
    # 设置工作流程的权限
    permissions:
      packages: write
      contents: read
    # 步骤
    steps:
      # 检出仓库
      - name: Check out the repo
        uses: actions/checkout@v4
      # 登录到 Docker Hub
      - name: Log in to Docker Hub
        uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      # 登录到 GitHub Container Registry
      - name: Log in to the Container registry
        uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          # GitHub Actions 会默认提供一个特殊的 Token (GITHUB_TOKEN),用于执行工作流程中的操作,包括登录到容器注册表
          password: ${{ secrets.GITHUB_TOKEN }}
      # 提取 Docker 的元数据(标签、标签)
      - name: Extract metadata (tags, labels) for Docker
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: |
            imsyy/splayer
            ghcr.io/${{ github.repository }}
      # 构建并推送 Docker 镜像
      - name: Build and push Docker image
        uses: docker/build-push-action@v5
        with:
          context: . # Docker 上下文路径,表示 Dockerfile 所在的目录为当前目录
          file: ./Dockerfile # Dockerfile 文件的路径
          push: true # 设置为 true 表示构建完成后推送 Docker 镜像到镜像仓库
          tags: ${{ steps.meta.outputs.tags }} # 使用 metadata-action 输出的标签作为 Docker 镜像的标签
          labels: ${{ steps.meta.outputs.labels }} # 使用 metadata-action 输出的标签作为 Docker 镜像的标签

完成

大功告成!试着去发布一下新版本试试吧 🎉

赞赏博主
评论 隐私政策