简介
白嫖github的算力和存储空间,来编译存放docker镜像。 docker pull ghcr.io/cn4096/xxx:latest
准备文件

把容器里运行所需文件准备好,如果是跨平台的,就把各个平台的都放进去。
修改Dockerfile
# 使用 Alpine 作为基础镜像
FROM alpine:latest
# 安装必要的运行时依赖
RUN apk add --no-cache \
ca-certificates \
libc6-compat \
&& rm -rf /var/cache/apk/*
# 创建非 root 用户
RUN adduser -D -u 1000 user
USER user
# 设置工作目录
ENV HOME=/home/user
WORKDIR $HOME/app
# ✅ 关键修复:必须在 FROM 之后显式声明这些变量,RUN 步骤才能读到值
ARG TARGETPLATFORM
ARG TARGETOS
ARG TARGETARCH
# 将所有可执行文件复制到容器内
COPY --chown=user . .
# 动态查找并准备可执行文件
RUN <<EOF
#!/bin/sh
set -e
echo "Building for platform: $TARGETPLATFORM"
echo "=== 当前目录文件 ==="
ls -la
# 根据 TARGETPLATFORM 映射到实际的文件名
case "$TARGETPLATFORM" in
"linux/amd64")
FILE_PATTERN="erp-linux-amd64-x64"
;;
"linux/arm64"|"linux/aarch64")
FILE_PATTERN="erp-linux-arm64-arm64" # ⚠️ 请确认你的实际文件名
;;
*)
echo "Unsupported platform: $TARGETPLATFORM"
exit 1
;;
esac
# 检查文件是否存在
if [ ! -f "$FILE_PATTERN" ]; then
echo "Error: Could not find binary: $FILE_PATTERN"
exit 1
fi
echo "Found binary: $FILE_PATTERN"
cp "$FILE_PATTERN" erp-binary
chmod +x erp-binary
echo "Successfully prepared erp-binary for $TARGETPLATFORM"
EOF
# 声明服务端口
EXPOSE 8080
# 启动命令
CMD ["./erp-binary"]
这是多平台镜像的核心: 根据 TARGETPLATFORM 映射到实际的文件名
新建action
创建这个文件 docker-image.yml ,该文件是告诉gayhub的编译机器(其实也是容器),要如何编译镜像,如何发布等。
name: Build and Push Docker Image
on:
push:
branches: [ main ]
paths:
- 'Dockerfile'
- 'erp-linux-amd64-x64'
- 'erp-linux-arm64-arm64'
pull_request:
branches: [ main ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
platforms: linux/amd64,linux/arm64
tags: |
ghcr.io/${{ github.repository_owner }}/aerp:latest
labels: |
org.opencontainers.image.source=https://github.com/${{ github.repository }}
org.opencontainers.image.description=HTTP Server
org.opencontainers.image.licenses=MIT
cache-from: type=gha
cache-to: type=gha,mode=max
编译镜像

收货
点进去

复制镜像地址
点进去,就有了

最后一次更新于2026-03-18


