本文发表于 267 天前,其中的信息可能已经事过境迁
文章摘要 FakeGPT
加载中...|
前期准备
在使用自动部署之前,确保你对 Docker 和 GitHub Actions 有一定的了解。
Docker 是什么
Docker 是一种容器化平台,允许开发者将应用程序及其依赖项打包到一个容器中,确保在不同环境中的一致性运行。
GitHub Actions 是什么
GitHub Actions 是 GitHub 提供的持续集成和持续部署工具,可用于自动化软件开发工作流程。
注册账号
如果你已有 GitHub 和 DockerHub 的账号,你可以跳过这一步
在 DockerHub 注册一个账号,或者使用现有的 GitHub
账号进行登录。注册后,请记录下你的 username
和 password
,这将用于后续编写 GitHub Actions 工作流。
另外,除了 DockerHub
,GitHub
也有一个类似的服务,叫做 GitHub Container Registry
,简称 GCR
。本文也将介绍如何同时推送 Docker Image
到 DockerHub
和 GCR
。
准备信息
现在,你已经为自动化部署的下一步做好了充分的准备。接下来,将深入介绍如何配置 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 镜像的标签
完成
大功告成!试着去发布一下新版本试试吧 🎉
使用 Github Actions 自动部署 Docker Imagehttps://blog.imsyy.top/posts/2024/0116
赞赏博主
评论 隐私政策