Files
peipei-backend/docker/Dockerfile
irving ea0490e141 feat: 增强Docker构建系统,支持多架构构建
- 为build-docker.sh添加架构特定构建支持 (amd64/arm64)
- 始终使用Docker Buildx确保跨平台构建的一致性
- 添加构建缓存支持,使用.buildx-cache目录
- 更新Dockerfile使用平台感知基础镜像 (FROM --platform=$TARGETPLATFORM)
- 改进push-docker.sh以支持架构特定标签
- 为构建脚本添加帮助选项 (-h)
- 使用更严格的错误处理 (set -euo pipefail)
- 更新.gitignore排除构建缓存

现在支持构建:
- Apple Silicon本地开发 (arm64)
- Linux服务器部署 (amd64)
- 从任意机器进行跨平台构建
2025-09-06 21:57:59 -04:00

39 lines
1.2 KiB
Docker

# ---------- Build stage ----------
FROM maven:3.9-eclipse-temurin-11 AS build
WORKDIR /workspace
# Cache-friendly: copy POMs first
COPY pom.xml .
COPY play-admin/pom.xml play-admin/
COPY play-common/pom.xml play-common/
COPY play-generator/pom.xml play-generator/
# Warm deps cache
RUN --mount=type=cache,target=/root/.m2 mvn -B -DskipTests dependency:go-offline
# Add sources
COPY play-admin/src play-admin/src/
COPY play-common/src play-common/src/
COPY play-generator/src play-generator/src/
# Build only app module (and its deps)
RUN --mount=type=cache,target=/root/.m2 mvn -pl play-admin -am -B -DskipTests -T 1C clean package
# ---------- Runtime stage (multi-arch) ----------
FROM --platform=$TARGETPLATFORM eclipse-temurin:11-jre AS runtime
# non-root
RUN groupadd -g 1001 appgroup && useradd -u 1001 -g appgroup -m -s /usr/sbin/nologin appuser
WORKDIR /app
COPY --from=build /workspace/play-admin/target/*.jar /app/app.jar
RUN chown -R appuser:appgroup /app
USER appuser
ENV JAVA_OPTS="-Xms2g -Xmx2g" \
SPRING_PROFILES_ACTIVE="test" \
TZ="Asia/Shanghai" \
LANG="C.UTF-8"
EXPOSE 7002
ENTRYPOINT ["sh","-c","exec java $JAVA_OPTS -jar /app/app.jar --spring.profiles.active=${SPRING_PROFILES_ACTIVE}"]