1- name : Build and Push Multi-Platform Docker Images with Compose
1+ name : Build and Push Multi-Platform Docker Images
22
33on :
44 push :
@@ -12,20 +12,19 @@ jobs:
1212 - name : Checkout code
1313 uses : actions/checkout@v4
1414
15- # 步骤:设置 Docker Buildx 并启用多平台支持
15+ # 启用 Buildx 并安装 QEMU(支持多平台)
1616 - name : Set up Docker Buildx
1717 uses : docker/setup-buildx-action@v3
1818 with :
19- # 启用 QEMU 模拟器(支持非本机架构构建,如在 amd64 机器上构建 arm64)
20- install : true
19+ install : true # 安装 QEMU 模拟器
2120
2221 - name : Login to Docker Hub
2322 uses : docker/login-action@v3
2423 with :
2524 username : ${{ secrets.DOCKER_HUB_USERNAME }}
2625 password : ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
2726
28- # 生成标签(同上,保持不变 )
27+ # 生成标签(同上)
2928 - name : Determine image tags
3029 id : set-tags
3130 run : |
@@ -42,25 +41,26 @@ jobs:
4241 fi
4342 echo "BASE_TAG=$BASE_TAG" >> $GITHUB_ENV
4443 echo "ALL_TAGS=$ALL_TAGS" >> $GITHUB_ENV
44+ echo "DOCKER_HUB_USERNAME=${{ secrets.DOCKER_HUB_USERNAME }}" >> $GITHUB_ENV
4545
46- # 构建多平台镜像(关键步骤)
47- - name : Build multi-platform images with docker compose
48- run : |
49- # 指定目标平台(根据需求添加,如 linux/amd64,linux/arm64,linux/arm/v7 等)
50- TAG=${{ env.BASE_TAG }} docker compose build --platform linux/amd64,linux/arm64
51-
52- # 推送多平台镜像(包含所有标签)
53- - name : Push backend multi-platform images
54- run : |
55- IFS=',' read -ra TAGS <<< "${{ env.ALL_TAGS }}"
56- for TAG in "${TAGS[@]}"; do
57- # 推送多平台镜像(buildx 会自动处理 manifest)
58- docker push ${{ secrets.DOCKER_HUB_USERNAME }}/timelesstales-backend:$TAG
59- done
46+ # 构建并推送后端多平台镜像
47+ - name : Build and push backend
48+ uses : docker/build-push-action@v5
49+ with :
50+ context : ./package/server # 后端 Dockerfile 路径
51+ platforms : linux/amd64,linux/arm64 # 目标平台
52+ push : true # 直接推送
53+ tags : |
54+ ${{ env.DOCKER_HUB_USERNAME }}/timelesstales-backend:${{ env.BASE_TAG }}
55+ ${{ env.EXTRA_TAGS != '' && format('{0}/timelesstales-backend:latest', env.DOCKER_HUB_USERNAME) || '' }}
6056
61- - name : Push frontend multi-platform images
62- run : |
63- IFS=',' read -ra TAGS <<< "${{ env.ALL_TAGS }}"
64- for TAG in "${TAGS[@]}"; do
65- docker push ${{ secrets.DOCKER_HUB_USERNAME }}/timelesstales-frontend:$TAG
66- done
57+ # 构建并推送前端多平台镜像
58+ - name : Build and push frontend
59+ uses : docker/build-push-action@v5
60+ with :
61+ context : ./package/website # 前端 Dockerfile 路径
62+ platforms : linux/amd64,linux/arm64 # 目标平台
63+ push : true
64+ tags : |
65+ ${{ env.DOCKER_HUB_USERNAME }}/timelesstales-frontend:${{ env.BASE_TAG }}
66+ ${{ env.EXTRA_TAGS != '' && format('{0}/timelesstales-frontend:latest', env.DOCKER_HUB_USERNAME) || '' }}
0 commit comments