diff --git a/.github/workflows/docker-ghcr.yml b/.github/workflows/docker-ghcr.yml index 0b33a7b..fc1808e 100644 --- a/.github/workflows/docker-ghcr.yml +++ b/.github/workflows/docker-ghcr.yml @@ -17,31 +17,6 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: 设置Go环境 - uses: actions/setup-go@v5 - with: - go-version-file: "src/go.mod" - cache-dependency-path: "src/go.sum" - - - name: 安装 UPX - uses: crazy-max/ghaction-upx@v3 - with: - install-only: true - - - name: 编译二进制文件 - run: | - cd src - - # Linux AMD64 - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o ../build/hubproxy/hubproxy-linux-amd64 . - - # Linux ARM64 - CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="-s -w" -o ../build/hubproxy/hubproxy-linux-arm64 . - - # 压缩二进制文件 - upx -9 ../build/hubproxy/hubproxy-linux-amd64 - upx -9 ../build/hubproxy/hubproxy-linux-arm64 - - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 diff --git a/Dockerfile b/Dockerfile index 419da9d..e4f248e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,20 @@ +FROM golang:1.25-alpine AS builder + +ARG TARGETARCH + +WORKDIR /app +COPY src/go.mod src/go.sum ./ +RUN go mod download && apk add upx + +COPY src/ . + +RUN CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETARCH} go build -ldflags="-s -w" -trimpath -o hubproxy . && upx -9 hubproxy + FROM alpine WORKDIR /root/ -ENV BINARY_NAME=hubproxy - -ARG TARGETOS -ARG TARGETARCH - -COPY src/config.toml . -COPY build/hubproxy/${BINARY_NAME}-${TARGETOS}-${TARGETARCH} ${BINARY_NAME} +COPY --from=builder /app/hubproxy . +COPY --from=builder /app/config.toml . CMD ["./hubproxy"] \ No newline at end of file