一、本地构建并推送镜像
1. 登录GitHub Container Registry
首先,需要登录到GitHub Container Registry (GHCR):
# 使用个人访问令牌(PAT)登录
docker login ghcr.io -u 你的GitHub用户名 -p 你的个人访问令牌
注意:你需要在GitHub上创建一个具有 read:packages 、 write:packages 和 delete:packages 权限的个人访问令牌。
2. 构建Docker镜像
在项目根目录(包含Dockerfile的目录)执行:
# 构建镜像
docker build -t ghcr.io/你的GitHub用户名/your-image-name:版本号 .
3. 推送镜像到GitHub
# 推送镜像
docker push ghcr.io/你的GitHub用户名/your-image-name:版本号
4. 设置镜像权限
推送后,前往GitHub仓库的 Packages 标签页,找到你的镜像包,点击进入后在 Package settings 中设置访问权限。如果需要公开访问,选择 Public ;如果需要私有访问,选择 Private 。
二、在生产环境拉取使用
1. 如果镜像是公开的
修改 docker-compose.yml 文件,将 app 服务的 build 部分替换为 image :
app:image: ghcr.io/你的GitHub用户名/your-image-name:版本号container_name: your-container-namerestart: always# 其他配置保持不变
2. 如果镜像是私有的
a. 在生产服务器上登录GitHub Container Registry
docker login ghcr.io -u 你的GitHub用户名 -p 你的个人访问令牌
b. 修改docker-compose.yml文件
app:image: ghcr.io/你的GitHub用户名/your-image-name:版本号container_name: your-container-namerestart: always# 其他配置保持不变
3. 启动服务
docker-compose up -d
三、自动化构建与部署(可选)
你可以使用GitHub Actions自动构建和推送Docker镜像。在项目根目录创建 .github/workflows/docker-build.yml 文件:
name: Build and Push Docker Imageon:push:branches: [ main ]tags: [ 'v*' ]jobs:build:runs-on: ubuntu-lateststeps:- name: Checkout codeuses: actions/checkout@v2- name: Set up Docker Buildxuses: docker/setup-buildx-action@v1- name: Login to GitHub Container Registryuses: docker/login-action@v1with:registry: ghcr.iousername: ${{ github.repository_owner }}password: ${{ secrets.GITHUB_TOKEN }}- name: Build and pushuses: docker/build-push-action@v2with:context: .push: truetags: |ghcr.io/${{ github.repository_owner }}/your-image-name:latestghcr.io/${{ github.repository_owner }}/your-image-name:${{ github.ref_name }}