From 009694fee79269843c2dc427a8ea68d25edf78cf Mon Sep 17 00:00:00 2001 From: ryan Date: Fri, 31 Jul 2026 23:28:02 +0800 Subject: [PATCH] =?UTF-8?q?build(Docker=E6=9E=84=E5=BB=BA):=20=E9=99=90?= =?UTF-8?q?=E5=88=B6=E6=9E=84=E5=BB=BA=E9=98=B6=E6=AE=B5=E5=86=85=E5=AD=98?= =?UTF-8?q?=E4=B8=8E=E5=B9=B6=E8=A1=8C=E5=BA=A6=EF=BC=8C=E9=98=B2=E6=AD=A2?= =?UTF-8?q?=E4=BD=8E=E9=85=8D=E7=8E=AF=E5=A2=83=20OOM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Motivation: 在 1Panel 等资源受限的部署环境中,Go 编译器并发编译和运行时内存增长可能导致构建阶段 OOM 而被 kill,通过限制并行度和设置内存上限来规避该问题。 Changes: * 构建阶段新增 GOMEMLIMIT=512MiB 环境变量,控制 Go 运行时内存上限 * 编译命令新增 -p 1 参数,限制并行编译单元数量以减少峰值内存占用 * 构建命令参数按职责拆分为多行,提升可读性 --- Dockerfile | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6b054fc..a69019e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,11 +3,17 @@ FROM golang:1.26-alpine AS builder WORKDIR /app ENV GOTOOLCHAIN=auto \ GOPROXY=https://goproxy.cn,direct \ - GOSUMDB=sum.golang.google.cn + GOSUMDB=sum.golang.google.cn \ + GOMEMLIMIT=512MiB COPY go.mod go.sum ./ RUN go mod download COPY . . -RUN CGO_ENABLED=0 GOOS=linux go build -o /server ./cmd/server +RUN CGO_ENABLED=0 \ + GOOS=linux \ + go build \ + -p 1 \ + -o /server \ + ./cmd/server FROM alpine:3.20