功能雏形大致完成,这里将使用 Github 的 Actions 创建 Docker 镜像。创建成功后同时上传至该项目的 Project 内。
免费的 github 用户有 2000 分钟/月的 Action 使用时间,可在个人设置页的 Billing and plans 菜单下的 pland and usage 子菜单页面查看使用情况
Github workflow
name: Docker build app
on:
workflow_dispatch:
env:
IMAGE_NAME: explorer
jobs:
build:
runs-on: ubuntu-latest
env:
TZ: Asia/Shanghai
REGISTRY: ghcr.io
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: main
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.repository_owner }}
password: ${{ secrets.PROJECT_TOKEN }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v5
with:
context: .
file: ./explorer.full.Dockerfile
push: true
tags: ${{ env.REGISTRY }}/yangws29/${{ env.IMAGE_NAME }}:latest
docker 的 tag 为全小写,由于账户名为大小写混合,打 tag 时不能直接使用
${{ github.repository_owner }}该环境变量。只需要将自己的用户名大写变为小写即可。
on:
workflow_dispatch:
启用 workflow 可手动启动 workflow 模式
使用了
- actions/checkout@v4 获取仓库代码
- docker/setup-buildx-action@v3 切换 docker build
- docker/login-action@v3 登录 docker
- docker/build-push-action@v5 build Docker 镜像并 push
也可使用 docker/login-action@v3 与 docker/build-push-action@v5 登录上传至阿里云的私有镜像源内。
- name: Login to DockerHub
uses: docker/login-action@v3
with:
registry: registry.cn-hangzhou.aliyuncs.com
username: ${{ secrets.ALI_DOCKER_USERNAME }}
password: ${{ secrets.ALI_DOCKER_PASSWORD }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v5
with:
context: .
file: ./explorer.full.Dockerfile
push: true
tags: registry.cn-hangzhou.aliyuncs.com/NAMESPACE/IMAGE-NAME
相关设置
生成 ${{secrets.PROJECT_TOKEN}} 所需的 PROJECT_TOKEN步骤
- 个人 Profile 页,点击侧边菜单最下面的 Develooper settings 菜单
- 进入 Personal access tokens → Tokens(classic)子菜单
- 点击 Generate new token 按钮,选择 Generate new token(classic)菜单
- Note 输入框输入你想要的名称
- Expiration 选择Token 过期时间
- Select scopes 复选框列表选中 write:packages 、delete:packages 复选框
- 点击最下面的 Generate token 按钮,完成 Token 的创建
这样这个创建好的 Token 就能让 Actions 的 workflow 将 build 好的镜像上传至 ghcr.io 个人 packages 内
${{secrets.PROJECT_TOKEN}} 填写路径
github 项目内,settings 选项卡,Secrets and variables 菜单,Actions 子菜单。点击 New Repository secret 按钮。
- name 输入框输入 PROJECT_TOKEN
- Secret 输入框输入刚刚创建好的 TOKEN
将上传后的镜像关联至项目中
进入个人主页中,点击 Packages 选项卡。
进入刚刚上传好的镜像页面。点击 Connect Repository 按钮,选择需要关联的仓库即可。
点击右边的 package settings 按钮,页面滚动到最下面,Danger Zone 内容部分,点击 Change visibility 按钮,即可对该镜像镜像管理。当为 Private 时,需要授权的用户才能下载镜像。切换为 Public 即所有用户都可以 pull 该镜像
额外信息
镜像地址 docker.pkg.github.com 与 ghcr.io 格式区别
- docker.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME
- ghcr.io/OWNER/IMAGE-NAME