Docker 启动后端 Jar 包
有哪些文件
.
├── .dockerignore
├── application-dev.yml
├── application.yml
├── Dockerfile
├── logs
├── xxx-boot-1.0.0.jar
└── startup_xxx.sh
.dockerignore 内容
logs/
Dockerfile 内容
FROM eclipse-temurin:8-jre-noble
ENV TZ=Asia/Shanghai
RUN ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime \
&& echo ${TZ} > /etc/timezone
RUN mkdir -p /app/xxx
ENV APP_DIR=/app/xxx
WORKDIR $APP_DIR
COPY . $APP_DIR/
CMD ["java", "-Xms256m", "-Xmx1024m", "-jar", "/app/xxx/xxx-boot-1.0.0.jar"]
FROM eclipse-temurin:8-jre-noble
使用 Eclipse Temurin 提供的 OpenJDK 8 JRE 作为基础镜像,适合运行 Java 应用(不含编译工具)。其中noble是所基于的 Ubuntu 版本。
ENV TZ=Asia/Shanghai
设置容器默认时区为中国标准时间(CST,UTC+8)。
RUN ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone
通过符号链接设置时区为上海,并写入/etc/timezone文件,确保容器时间正确。
RUN mkdir -p /app/xxx
创建应用目录/app/xxx,-p确保父目录不存在时一并创建。
ENV APP_DIR=/app/xxx
定义环境变量APP_DIR,用于统一引用应用目录路径。
WORKDIR $APP_DIR
设置工作目录为$APP_DIR,后续命令都在此目录下执行。
COPY . $APP_DIR/
将当前构建上下文中的所有内容复制到容器内的$APP_DIR/目录。
CMD ["java", "-Xms256m", "-Xmx1024m", "-jar", "/app/xxx/xxx-boot-1.0.0.jar"]
指定容器启动时执行的命令,运行指定的 Java 应用,堆内存初始值为 256MB,最大为 1024MB。
startup_xxx.sh 内容
#!/bin/bash
# 停止并删除已有的容器(如果存在)
if docker ps -a --format '{{.Names}}' | grep -q '^xxx$'; then
docker rm -f xxx
fi
# 删除已有的镜像(如果存在)
if docker images -q xxx:1.0 > /dev/null; then
docker rmi xxx:1.0
fi
# 构建新的镜像
cd /app/xxx/xxx_service && \
docker build -t xxx:1.0 .
# 运行新的容器
docker run -d \
--name xxx \
--restart=unless-stopped \
-p 25000:25000 \
-v /app/xxx/xxx_service/logs/:/app/xxx/logs/ \
--memory="1024m" \
--memory-swap="1024m" \
--log-opt max-size=10m \
--log-opt max-file=3 \
xxx:1.0
# 输出容器日志
docker logs -f xxx

浙公网安备 33010602011771号