f07c1ae6b8
CI/CD Deploy (Admin) / 构建后端镜像并部署 (push) Successful in 4m23s
- 镜像源从阿里云换成腾讯云(内网直连,解决依赖下载仅几十KB/s的问题) - RUN 加 BuildKit cache mount 持久化 /root/.m2/repository,跨构建复用 - CI 构建步骤显式启用 DOCKER_BUILDKIT=1
48 lines
2.2 KiB
Docker
48 lines
2.2 KiB
Docker
# =============================================================
|
||
# freedom-admin 后端镜像
|
||
# 构建阶段:Maven 3.6.3 + JDK8 打包(使用阿里云镜像加速依赖下载)
|
||
# 运行阶段:JRE8 运行 jar
|
||
# =============================================================
|
||
FROM maven:3.6.3-jdk-8 AS builder
|
||
WORKDIR /build
|
||
|
||
# 配置腾讯云镜像源(腾讯云服务器内网直连,速度远快于公网阿里云)
|
||
RUN mkdir -p /root/.m2 && \
|
||
echo '<?xml version="1.0" encoding="UTF-8"?>' > /root/.m2/settings.xml && \
|
||
echo '<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"' >> /root/.m2/settings.xml && \
|
||
echo ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' >> /root/.m2/settings.xml && \
|
||
echo ' xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">' >> /root/.m2/settings.xml && \
|
||
echo ' <mirrors>' >> /root/.m2/settings.xml && \
|
||
echo ' <mirror>' >> /root/.m2/settings.xml && \
|
||
echo ' <id>tencent</id>' >> /root/.m2/settings.xml && \
|
||
echo ' <mirrorOf>central</mirrorOf>' >> /root/.m2/settings.xml && \
|
||
echo ' <name>Tencent Cloud Maven</name>' >> /root/.m2/settings.xml && \
|
||
echo ' <url>https://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url>' >> /root/.m2/settings.xml && \
|
||
echo ' </mirror>' >> /root/.m2/settings.xml && \
|
||
echo ' </mirrors>' >> /root/.m2/settings.xml && \
|
||
echo '</settings>' >> /root/.m2/settings.xml
|
||
|
||
# 复制 pom 与源码(利用 Docker 分层缓存)
|
||
COPY pom.xml .
|
||
COPY src ./src
|
||
|
||
# 打包(跳过测试),使用 BuildKit cache mount 持久化 Maven 仓库,跨构建复用
|
||
RUN --mount=type=cache,target=/root/.m2/repository mvn -B clean package -DskipTests
|
||
|
||
# ---------- 运行阶段 ----------
|
||
FROM openjdk:8-jre-slim
|
||
WORKDIR /app
|
||
|
||
# 设置时区
|
||
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
|
||
echo 'Asia/Shanghai' > /etc/timezone
|
||
|
||
# 复制构建产物
|
||
COPY --from=builder /build/target/*.jar /app/app.jar
|
||
|
||
# 对外暴露端口(与 application.yml server.port 一致)
|
||
EXPOSE 8800
|
||
|
||
# 启动。数据库等敏感配置通过环境变量注入(见 docker-compose / .env)
|
||
ENTRYPOINT ["java", "-jar", "/app/app.jar"]
|