一、本地構建并推送鏡像
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 }}