You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub Actions运行的Dockerfile中引用ghcr存储的镜像

Dockerfile引用GHCR存储镜像的方法

1. 确认镜像的完整GHCR路径

GHCR上存储的所有镜像都遵循统一命名规则:
ghcr.io/<GitHub用户名/组织名>/<镜像名称>:<镜像标签>
举个实际示例:如果你的GitHub用户名为demo-user,打包的Ubuntu+Miniconda基础镜像命名为python-env-base,打包时打的标签为v2.0,那么该镜像的完整路径为 ghcr.io/demo-user/python-env-base:v2.0

小提示:建议给基础镜像使用固定的版本标签(如v1.0、20240601)而非latest,避免基础镜像更新后意外影响你的项目构建结果

2. 编写Dockerfile的FROM语句

直接将上述完整路径写在FROM指令后即可,示例Dockerfile内容如下:

# 引用GHCR上存储的公共/私有基础镜像
FROM ghcr.io/demo-user/python-env-base:v2.0

# 后续添加你的项目自定义配置
WORKDIR /opt/project
# 挂载项目卷(按需配置)
VOLUME [ "/opt/project/data" ]
# 复制项目代码
COPY . .
# 其余启动命令等自定义指令
CMD [ "python", "main.py" ]

3. GitHub Actions运行时的权限配置(仅私有镜像需要)

如果你的GHCR基础镜像是私有状态,需要在GitHub Actions工作流配置中添加GHCR登录步骤,否则会出现镜像拉取权限报错,示例工作流配置:

jobs:
  build-image:
    runs-on: ubuntu-latest
    steps:
      # 拉取仓库代码
      - uses: actions/checkout@v4
      # 登录GHCR获取镜像拉取权限
      - name: Login to GHCR
        uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
      # 后续执行构建镜像等操作
      - name: Build project image
        run: docker build -t project-image .

提示:如果是同账号/同组织下的仓库调用镜像,默认的GITHUB_TOKEN自带同账号下GHCR镜像的拉取权限,无需额外生成个人访问令牌;如果是跨账号调用私有镜像,需要生成拥有GHCR读权限的PAT存入仓库密钥后替换上述的secrets.GITHUB_TOKEN即可

内容的提问来源于stack exchange,提问作者Piotr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:24:08