# 使用官方的OpenJDK 8基础镜像
FROM openjdk:8-jre-alpine
# 设置时区为Asia/Shanghai
RUN apk --no-cache add tzdata \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& apk del tzdata
# 设置工作目录
WORKDIR /app
# 复制构建好的Java Spring Boot JAR文件到工作目录
COPY target/your-spring-boot-app.jar /app
# 设置环境变量以解决中文乱码问题
ENV LANG=C.UTF-8
# 暴露应用程序的端口(替换为你的应用程序实际使用的端口)
EXPOSE 8080
# 定义启动命令
CMD ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "your-spring-boot-app.jar"]
- FROM openjdk:8-jre-alpine:
FROM: 指定基础镜像。
openjdk:8-jre-alpine: 使用OpenJDK 8 JRE镜像,基于Alpine Linux。
- WORKDIR /app:
WORKDIR: 设置工作目录,后续命令都在这个目录下执行。
/app: 工作目录的路径,这里设置为/app。
- RUN apk --no-cache add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone && apk del tzdata:
RUN: 在构建过程中执行的命令。
apk --no-cache add tzdata: 安装tzdata包,Alpine Linux中的时区配置工具。
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime: 设置时区为Asia/Shanghai。
echo "Asia/Shanghai" > /etc/timezone: 再次确认时区设置。
apk del tzdata: 删除tzdata包,清理安装时产生的临时文件。
- ENV LANG=C.UTF-8:
ENV: 设置环境变量。
LANG=C.UTF-8: 设置LANG环境变量为C.UTF-8,解决中文乱码问题。
- COPY target/your-spring-boot-app.jar /app:
COPY: 复制文件或目录到容器中。
target/your-spring-boot-app.jar: 构建好的Spring Boot应用程序的JAR文件。
/app: 目标路径,将JAR文件复制到工作目录。
- EXPOSE 8080:
EXPOSE: 声明容器要监听的端口。
8080: Spring Boot应用程序默认使用的端口,可以根据实际情况修改。
- CMD ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "your-spring-boot-app.jar"]:
CMD: 容器启动时执行的命令。
java: Java运行时。
-Djava.security.egd=file:/dev/./urandom: 设置随机数生成器,提高应用程序启动性能。
-jar: 指定要运行的JAR文件。
your-spring-boot-app.jar: 替换为实际的Spring Boot应用程序JAR文件名。