Files
MyTool/docker/Dockerfile

45 lines
1.2 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MangTool 前后端单容器构建
# 阶段1构建前端
FROM node:20-alpine AS frontend-builder
WORKDIR /app/frontend
COPY frontend/package.json frontend/package-lock.json ./
RUN npm ci --ignore-scripts
COPY frontend/ ./
# 生产环境使用相对路径,与后端同源
ENV VITE_API_BASE_URL=
RUN npm run build
# 阶段2构建后端含前端静态资源
FROM maven:3.8-eclipse-temurin-8-alpine AS backend-builder
WORKDIR /app
# 复制后端源码
COPY backend/pom.xml ./
RUN mvn dependency:go-offline -B
COPY backend/ ./
# 从阶段1 复制前端构建产物到 Spring Boot 静态目录
COPY --from=frontend-builder /app/frontend/dist ./src/main/resources/static
RUN mvn package -DskipTests -B
# 阶段3运行镜像
FROM eclipse-temurin:8-jre-alpine
WORKDIR /app
RUN apk add --no-cache tzdata wget \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
COPY --from=backend-builder /app/target/*.jar app.jar
EXPOSE 8080
# 健康检查
HEALTHCHECK --interval=30s --timeout=3s --start-period=40s --retries=3 \
CMD wget --quiet --tries=1 --spider http://localhost:8080/api/health || exit 1
ENTRYPOINT ["java", "-jar", "app.jar"]