From ad1580b732c77dbb49b1758db9c70c9389f12bb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Wed, 7 Aug 2024 07:42:12 +0800 Subject: [PATCH] 'commit' --- Ylt/gw-charge/Dockerfile | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/Ylt/gw-charge/Dockerfile b/Ylt/gw-charge/Dockerfile index cff86ba..160dc86 100644 --- a/Ylt/gw-charge/Dockerfile +++ b/Ylt/gw-charge/Dockerfile @@ -1,7 +1,36 @@ +# 指定了使用openjdk:8u332-jre-slim-bullseye镜像作为基础镜像,并且给这个镜像起了一个别名runner FROM openjdk:8u332-jre-slim-bullseye AS runner + +# WORKDIR指令用于设置容器内部的工作目录,即后续指令执行时的当前目录。当Docker容器启动并执行命令时,这些命令将在WORKDIR指定的目录中执行。 WORKDIR /root + +# ENV TZ这样的用法通常是用来设置时区环境变量,TZ代表Time Zone ENV TZ=Asia/Shanghai + +# 将target文件夹下的jar包gw-charge.jar复制到容器的/root目录下 COPY ./target/gw-charge.jar /root/gw-charge.jar + +# 每个参数的含义: +#-server:选择服务器(server)模式,这是JVM的高性能模式。 +#-XX:+UnlockExperimentalVMOptions:启用JVM中的实验性选项。 +#-XX:+UseCGroupMemoryLimitForHeap:让JVM堆内存大小限制与cgroups的内存限制一致。cgroups是一种Linux内核特性,用于限制进程组使用的资源。 +#-XX:MaxRAMFraction=1:设置JVM可以使用的最大堆内存占系统总内存的比例为100%。 +#设置这个环境变量后,您可以在Docker容器中启动Java应用程序时使用这些参数。 ENV JAVA_OPTS="-server -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1 " -ENV ENV_OPTS="-Dspring.profiles.active=test" + +# 这行指令设置了名为ENV_OPTS的环境变量,其值是一个用于Spring应用程序的命令行参数,用来激活名为test的配置文件。 +# 这个参数通常在启动Spring应用程序时使用,以确保应用程序加载正确的配置。 +# Spring Boot会根据以下优先级顺序来确定激活的配置文件: +#命令行参数:使用-Dspring.profiles.active=...指定的配置文件具有最高的优先级。 +#环境变量:如果设置了SPRING_PROFILES_ACTIVE环境变量,它将覆盖配置文件中的设置。 +#配置文件中的spring.profiles.active:在application.properties或bootstrap.properties(以及对应的YAML格式)中设置的spring.profiles.active具有较低的优先级。 +#在您提供的情况中,通过ENV指令设置的环境变量ENV_OPTS包含了-Dspring.profiles.active=test,这意味着在启动Java应用程序时,将通过命令行参数指定test配置文件为激活配置。因此,即使bootstrap.yml文件中设置了profiles: active: dev,应用程序最终将使用test配置文件,因为命令行参数的优先级高于配置文件中的设置。 +#所以,最终JAR包执行时,将使用test配置文件。 +#ENV ENV_OPTS="-Dspring.profiles.active=test" +ENV ENV_OPTS="-Dspring.profiles.active=pro" + +# sh -c:这告诉Docker容器使用sh(Shell)来执行后面的命令字符串。-c参数表示后面跟着的是要执行的命令。 +#java $JAVA_OPTS $ENV_OPTS ...:这是要执行的Java命令,其中$JAVA_OPTS和$ENV_OPTS是之前通过ENV指令设置的环境变量,它们将在运行时被替换为它们各自的值。 +#-Djava.security.egd=file:/dev/./urandom:这是一个Java系统属性,用于设置Java加密图形设备(EGD)的路径。这里指定为/dev/./urandom,这是一个提供高熵随机数的Unix特殊文件,常用于加密操作。 +#-jar /root/gw-charge.jar:这指定了要执行的Java归档文件(JAR)的位置和名称。这里假设JAR文件位于容器的/root目录下,名为gw-charge.jar。 ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS $ENV_OPTS -Djava.security.egd=file:/dev/./urandom -jar /root/gw-charge.jar" ]