Files
aiot-platform-cloud/docker/Dockerfile.service
lzh 5515e94439
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
fix: 移除Maven构建的-q参数以显示构建进度
- 移除 -q (quiet) 参数,允许显示构建步骤
- 添加 --no-transfer-progress 参数,隐藏依赖下载进度但保留构建信息
- 添加构建前后的进度提示信息
- 添加构建完成后的JAR文件列表显示

这样可以在Docker构建时看到Maven的编译进度,避免看起来像卡住的情况。
2026-01-14 00:04:05 +08:00

79 lines
2.0 KiB
Desktop File
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ============================================
# 服务构建 Dockerfile
# 基于依赖基础镜像,快速编译服务
# ============================================
# 构建参数
ARG DEPS_IMAGE=aiot-deps:latest
# ============ 构建阶段 ============
FROM ${DEPS_IMAGE} AS builder
ARG MODULE_NAME
ARG JAR_NAME
ARG SKIP_TESTS=true
WORKDIR /build
# 复制最新源代码(覆盖基础镜像中的代码)
COPY . .
# 构建应用
RUN echo "========================================" && \
echo "🔨 Building module: ${MODULE_NAME}" && \
echo "📦 JAR name: ${JAR_NAME}" && \
echo " Skip tests: ${SKIP_TESTS}" && \
echo "========================================" && \
mvn package -pl ${MODULE_NAME} -am \
-DskipTests=${SKIP_TESTS} \
-B \
--no-transfer-progress && \
echo " Build completed successfully!" && \
ls -lh ${MODULE_NAME}/target/*.jar
# ============ 运行阶段 ============
FROM eclipse-temurin:17-jre-alpine
# 安装必要工具
RUN apk add --no-cache wget curl
# 构建参数
ARG MODULE_NAME
ARG JAR_NAME
ARG APP_PORT=48080
# 元数据标签
LABEL maintainer="XW-AIOT Team"
LABEL service="${MODULE_NAME}"
# 创建非 root 用户
RUN addgroup -g 1000 appuser && \
adduser -D -u 1000 -G appuser appuser
# 创建应用目录
RUN mkdir -p /app/logs /app/config && \
chown -R appuser:appuser /app
WORKDIR /app
# 从构建阶段复制 JAR 文件
COPY --from=builder --chown=appuser:appuser /build/${MODULE_NAME}/target/${JAR_NAME}.jar app.jar
# 切换到非 root 用户
USER appuser
# 环境变量
ENV TZ=Asia/Shanghai \
JAVA_OPTS="-Xms256m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200" \
SPRING_PROFILES_ACTIVE=prod
# 暴露端口
EXPOSE ${APP_PORT}
# 健康检查
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:${APP_PORT}/actuator/health || exit 1
# 启动应用
ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar app.jar"]