From 6fba4ebb13d9e92a36b7930bd8141483ff2aacf2 Mon Sep 17 00:00:00 2001 From: IanShaw027 Date: Sun, 15 Mar 2026 16:37:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=9C=A8=20Dockerfile.goreleaser=20?= =?UTF-8?q?=E4=B8=AD=E6=B7=BB=E5=8A=A0=20pg=5Fdump=20=E5=92=8C=20psql=20?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=20#1002?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为了支持容器内的数据库备份和恢复功能,在运行时镜像中添加 PostgreSQL 客户端工具。 变更内容: - 使用多阶段构建从 postgres:18-alpine 镜像复制 pg_dump 和 psql 二进制文件 - 添加必要的依赖库(libpq, zstd-libs, lz4-libs, krb5-libs, libldap, libedit) - 升级基础镜像到 alpine:3.21 - 复制 libpq.so.5 共享库以确保工具正常运行 这样可以在运行时容器中直接执行数据库备份和恢复操作,无需访问 Docker socket。 --- Dockerfile.goreleaser | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/Dockerfile.goreleaser b/Dockerfile.goreleaser index 2242c162..419994b9 100644 --- a/Dockerfile.goreleaser +++ b/Dockerfile.goreleaser @@ -5,7 +5,12 @@ # It only packages the pre-built binary, no compilation needed. # ============================================================================= -FROM alpine:3.19 +ARG ALPINE_IMAGE=alpine:3.21 +ARG POSTGRES_IMAGE=postgres:18-alpine + +FROM ${POSTGRES_IMAGE} AS pg-client + +FROM ${ALPINE_IMAGE} LABEL maintainer="Wei-Shaw " LABEL description="Sub2API - AI API Gateway Platform" @@ -16,8 +21,20 @@ RUN apk add --no-cache \ ca-certificates \ tzdata \ curl \ + libpq \ + zstd-libs \ + lz4-libs \ + krb5-libs \ + libldap \ + libedit \ && rm -rf /var/cache/apk/* +# Copy pg_dump and psql from a version-matched PostgreSQL image so backup and +# restore work in the runtime container without requiring Docker socket access. +COPY --from=pg-client /usr/local/bin/pg_dump /usr/local/bin/pg_dump +COPY --from=pg-client /usr/local/bin/psql /usr/local/bin/psql +COPY --from=pg-client /usr/local/lib/libpq.so.5* /usr/local/lib/ + # Create non-root user RUN addgroup -g 1000 sub2api && \ adduser -u 1000 -G sub2api -s /bin/sh -D sub2api