supeng 1 месяц назад
Родитель
Сommit
3ed7a71670
2 измененных файлов с 36 добавлено и 2 удалено
  1. 34 0
      Dockerfile.backend-only
  2. 2 2
      docker-compose.yml

+ 34 - 0
Dockerfile.backend-only

@@ -0,0 +1,34 @@
+# Backend-only Dockerfile - uses official frontend, builds custom backend
+# This is useful when you only modified backend code and want to avoid frontend build
+
+FROM calciumion/new-api:latest AS frontend
+
+FROM golang:alpine AS builder
+ENV GO111MODULE=on CGO_ENABLED=0
+
+ARG TARGETOS
+ARG TARGETARCH
+ENV GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH:-amd64}
+ENV GOEXPERIMENT=greenteagc
+
+WORKDIR /build
+
+ADD go.mod go.sum ./
+RUN go mod download
+
+COPY . .
+# Copy frontend from official image
+COPY --from=frontend /web/dist ./web/dist
+RUN go build -ldflags "-s -w -X 'github.com/QuantumNous/new-api/common.Version=$(cat VERSION)'" -o new-api
+
+FROM debian:bookworm-slim
+
+RUN apt-get update \
+    && apt-get install -y --no-install-recommends ca-certificates tzdata libasan8 wget \
+    && rm -rf /var/lib/apt/lists/* \
+    && update-ca-certificates
+
+COPY --from=builder /build/new-api /
+EXPOSE 3000
+WORKDIR /data
+ENTRYPOINT ["/new-api"]

+ 2 - 2
docker-compose.yml

@@ -16,7 +16,7 @@ services:
   new-api:
     build:
       context: .
-      dockerfile: Dockerfile
+      dockerfile: Dockerfile.backend-only  # 使用仅构建后端的 Dockerfile,避免前端构建 OOM
     container_name: new-api
     restart: always
     command: --log-dir /app/logs
@@ -29,7 +29,7 @@ services:
       # 阿里云 MySQL 连接配置 (Aliyun MySQL Connection)
       # 格式: username:password@tcp(host:port)/database
       # 示例: - SQL_DSN=root:your_password@tcp(rm-xxxxx.mysql.rds.aliyuncs.com:3306)/new-api
-      - SQL_DSN=ai_rw:ws8oRahcYm5GwkQy@mr-y9gker44xqhwnrnv59.rwlb.singapore.rds.aliyuncs.com:3306/new-api  # ⚠️ 请替换为您的阿里云 MySQL 连接信息
+      - SQL_DSN=ai_rw:ws8oRahcYm5GwkQy@tcp(mr-y9gker44xqhwnrnv59.rwlb.singapore.rds.aliyuncs.com:3306)/new-api  # ⚠️ 请替换为您的阿里云 MySQL 连接信息
 
       # 阿里云 Redis 连接配置 (Aliyun Redis Connection)
       # 格式: redis://:password@host:port/db