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


posted @ 2025-06-06 18:23  ioufev  阅读(35)  评论(0)    收藏  举报