Files
MyTool/docker/Dockerfile

66 lines
2.1 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
# 配置 Maven 使用阿里云镜像(加速下载,解决网络问题)
RUN mkdir -p /root/.m2 && \
cat > /root/.m2/settings.xml << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
</settings>
EOF
# 复制后端源码
COPY backend/pom.xml ./
# 验证并下载依赖(如果失败会自动重试)
RUN mvn dependency:resolve -B -s /root/.m2/settings.xml || \
(echo "依赖下载失败,重试中..." && sleep 2 && mvn dependency:resolve -B -s /root/.m2/settings.xml)
COPY backend/ ./
# 从阶段1 复制前端构建产物到 Spring Boot 静态目录
COPY --from=frontend-builder /app/frontend/dist ./src/main/resources/static
# 构建项目(跳过测试)
RUN mvn clean package -DskipTests -B -s /root/.m2/settings.xml
# 阶段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"]