refactor: 重构 Docker 构建流程,使用多阶段构建
This commit is contained in:
25
.github/workflows/docker-ghcr.yml
vendored
25
.github/workflows/docker-ghcr.yml
vendored
@@ -17,31 +17,6 @@ jobs:
|
|||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
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
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
|||||||
21
Dockerfile
21
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
|
FROM alpine
|
||||||
|
|
||||||
WORKDIR /root/
|
WORKDIR /root/
|
||||||
|
|
||||||
ENV BINARY_NAME=hubproxy
|
COPY --from=builder /app/hubproxy .
|
||||||
|
COPY --from=builder /app/config.toml .
|
||||||
ARG TARGETOS
|
|
||||||
ARG TARGETARCH
|
|
||||||
|
|
||||||
COPY src/config.toml .
|
|
||||||
COPY build/hubproxy/${BINARY_NAME}-${TARGETOS}-${TARGETARCH} ${BINARY_NAME}
|
|
||||||
|
|
||||||
CMD ["./hubproxy"]
|
CMD ["./hubproxy"]
|
||||||
Reference in New Issue
Block a user