docker-常用应用部署dockerfile模板-Springboot

FROM anapsix/alpine-java:8_server-jre_unlimited
# 下面是JDK17镜像
# FROM bellsoft/liberica-openjdk-debian:17.0.11-cds

MAINTAINER xxx作者
#定义参数(build构建时使用)
ARG VERSION
ARG SERVICE_NAME
ARG SERVICE_PORT

# 系统编码
#设置环境变量(程序运行时使用)
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
ENV JAVA_OPTS=""
ENV PARAMS="--spring.profiles.active=prod"
ENV VERSION=$VERSION
ENV SERVICE_NAME=$SERVICE_NAME
ENV SERVICE_PORT=$SERVICE_PORT

#工作目录
WORKDIR /usr/local/

# 声明一个挂载点,容器内此路径会对应宿主机的某个文件夹
VOLUME ["/usr/local/logs"]

# 应用构建成功后的jar文件被复制到镜像内,名字也改成了app.jar
ADD ./target/${SERVICE_NAME}-${VERSION}.jar app.jar

# 声明运行时端口
EXPOSE ${SERVICE_PORT}

# 健康检查参数设置,每5秒检查一次,接口超时时间2秒,连续10次返回1就判定该容器不健康
HEALTHCHECK --interval=5s \
            --timeout=3s \
            --retries=10 \
            CMD curl -fs http://localhost:${SERVICE_PORT}/actuator/health || exit 1

# 启动容器时的进程
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar app.jar $PARAMS"]

构建命令

docker build --build-arg VERSION=1.0.0 SERVICE_NAME=MyApp SERVICE_PORT=8080 -t my-springboot-app .

启动命令

docker run -d -p 8080:8080 --name my-springboot-container my-springboot-app

-Djava.security.egd=file:/dev/./urandom参数说明

在 Docker 容器中运行 Java 应用时,你可能会遇到由于熵池不足导致的 SSL/TLS 握手延迟问题。这是因为 Java 默认使用 /dev/random 作为其安全随机数生成器(SecureRandom)的来源,而 /dev/random 在熵池耗尽时会阻塞等待更多的熵输入,这在某些情况下(特别是容器化环境中)可能导致显著的性能瓶颈。为了缓解这个问题,可以通过设置 JVM 参数 security.egd 来指定使用 /dev/urandom 作为熵源。/dev/urandom 不会因为熵池不足而阻塞,因此可以提高应用启动速度和响应时间

上一篇:PLC编程—基本知识


下一篇:iPhone批量删除照片的方法