diff --git a/Ylt/gw-charge/Dockerfile b/Ylt/gw-charge/Dockerfile index cff86ba..7fb227f 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=dev" +#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" ] diff --git a/Ylt/gw-charge/src/main/resources/bootstrap-dev.yml b/Ylt/gw-charge/src/main/resources/bootstrap-dev.yml index 499e549..c52e9ca 100644 --- a/Ylt/gw-charge/src/main/resources/bootstrap-dev.yml +++ b/Ylt/gw-charge/src/main/resources/bootstrap-dev.yml @@ -197,7 +197,7 @@ hystrix: #熔断 default: execution: timeout: - enabled: true #配置HystrixCommand的执行是否启用超时时间 + enabled: false #配置HystrixCommand的执行是否启用超时时间 isolation: thread: timeoutInMilliseconds: 80000 #配置HystrixCommand执行的超时时间,执行超过该时间会进行服务降级处理 80s diff --git a/Ylt/gw-charge/target/classes/bootstrap-dev.yml b/Ylt/gw-charge/target/classes/bootstrap-dev.yml index 499e549..c52e9ca 100644 --- a/Ylt/gw-charge/target/classes/bootstrap-dev.yml +++ b/Ylt/gw-charge/target/classes/bootstrap-dev.yml @@ -197,7 +197,7 @@ hystrix: #熔断 default: execution: timeout: - enabled: true #配置HystrixCommand的执行是否启用超时时间 + enabled: false #配置HystrixCommand的执行是否启用超时时间 isolation: thread: timeoutInMilliseconds: 80000 #配置HystrixCommand执行的超时时间,执行超过该时间会进行服务降级处理 80s diff --git a/Ylt/gw-charge/target/gw-charge.jar b/Ylt/gw-charge/target/gw-charge.jar index 6c17573..f66b23a 100644 Binary files a/Ylt/gw-charge/target/gw-charge.jar and b/Ylt/gw-charge/target/gw-charge.jar differ diff --git a/Ylt/gw-charge/target/gw-charge.jar.original b/Ylt/gw-charge/target/gw-charge.jar.original index 6d392be..76d5ed0 100644 Binary files a/Ylt/gw-charge/target/gw-charge.jar.original and b/Ylt/gw-charge/target/gw-charge.jar.original differ diff --git a/后台入口.md b/后台入口.md deleted file mode 100644 index b5821bf..0000000 --- a/后台入口.md +++ /dev/null @@ -1,5 +0,0 @@ -> [http://10.10.14.67:7000/](http://10.10.14.67:7000/) -> -> $superadmin$ -> -> $superadmin$ \ No newline at end of file diff --git a/操作文档/9、Dockert使用办法.md b/操作文档/9、Dockert使用办法.md new file mode 100644 index 0000000..a3ae734 --- /dev/null +++ b/操作文档/9、Dockert使用办法.md @@ -0,0 +1,285 @@ + + +# $Docker$使用方法 + +### 一、安装 + +#### 1、脚本安装 + +```shell +yum install -y yum-utils +yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo +yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y +``` + +#### 2、配置镜像源 + +> 因为 “**未知**” 的原因,造成国内的$Docker$源全部失效,只好使用老毛子的$Docker$源,科学无国界~ + +```shell +mkdir -p /etc/docker + +tee /etc/docker/daemon.json < +``` + + + +### 三、容器管理 + +#### 1、运行容器 + +``` +docker run --name tomcat -p 8080:8080 -v $PWD/test:/usr/local/tomcat/webapps/test -d tomcat +``` + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408061425025.png) + +命令说明: + +``` +-p 8080:8080:将主机的 8080 端口映射到容器的 8080 端口 +-v $PWD/test:/usr/local/tomcat/webapps/test: 将主机中当前目录下的 test 挂载到容器的 /test +-d:这个参数表示以“detached”模式运行容器,即在后台运行。 +tomcat:这是要运行的 Docker 镜像的名称。在这个命令中,它假定您已经有了一个名为 tomcat 的本地镜像,或者 Docker 将尝试从 Docker Hub 拉取一个名为 tomcat 的公共镜像。 +``` + + + +> $Tomcat$需要把 `/usr/local/tomcat/webapps.dist/`目录下的所有文件和文件夹拷贝到 `/usr/local/tomcat/webapps/`下,才能访问到小猫的页面。 + +``` +cd /usr/local/tomcat/webapps.dist/ +mv docs/ ../webapps/ +mv examples/ ../webapps/ +mv host-manager/ ../webapps/ +mv manager/ ../webapps/ +mv ROOT/ ../webapps/ +``` + +查看$Tomcat$运行的主界面 + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408061433517.png) + +#### 2、查看容器 + +``` +docker ps +``` + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408061427759.png) + +#### 3、删除容器 + +``` +docker rm -f openjdk1.8 +或者 +docker rm -f 4bf2bd13f5b0 +``` + +#### 4、进入容器 + +``` +docker exec -it openjdk1.8 /bin/bash +``` + +``` +root@4bf2bd13f5b0:/usr/local/openjdk-8/bin# pwd +/usr/local/openjdk-8/bin +``` + +#### 5、将文件复制到容器外 + +``` +docker cp openjdk1.8:/usr/local/1.txt ./ +``` + +#### 6、将文件复制回容器 + +``` +docker cp ./1.txt openjdk1.8:/usr/local/ +``` + + + +### 四、使用$Dockerfile$创建镜像 + +> $dockerfile$ 内容如下: + +``` +# 指定了使用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_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=dev" +#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" ] + +``` + +#### 创建容器 + +``` +mkdir /usr/local/publish +cd /usr/local/publish +yum install lrzsz -y +rz -be +选择D:\dsWork\YltProject\Ylt\gw-charge\Dockerfile文件后上传 + +``` + + 将$Java$的微服务项目打包: + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408070818789.png) + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408070818135.png) + +#### 继续打包 + +``` +cd /usr/local/publish +mkdir target +cd target +rz -be +选择D:\dsWork\YltProject\Ylt\gw-charge\target\gw-charge.jar +cd .. +docker build -t gw-charge . +``` + +这里 `-t gw-charge` 为新创建的镜像指定了一个标签($tag$),`.` 表示 $Dockerfile$ 在当前目录。 + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408070821632.png) + +生成结束: + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408070821581.png) + +##### 查看本地是不是多了一个镜像 + +``` +docker images +``` + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408070823604.png) + +**运行容器**:一旦镜像构建完成,您可以使用 `docker run` 命令从该镜像启动一个新容器。 + +``` +docker run -d -p 7001:7001 gw-charge +``` + +`-d` 参数表示在后台运行容器,`-p 7001:7001` 表示将容器内部的 $7001$ 端口映射到宿主机的 $7001$ 端口。 + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408070824703.png) + +#### 查看正在运行的容器 + +``` +docker ps +``` + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408070848284.png) + +#### 查看$Docker$日志 + +``` +docker logs c128a94e5884 +``` + + + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408070839957.png) diff --git a/操作文档/驿来特代码模块依赖图.xmind b/操作文档/驿来特代码模块依赖图.xmind index 33fec7d..1e99b3f 100644 Binary files a/操作文档/驿来特代码模块依赖图.xmind and b/操作文档/驿来特代码模块依赖图.xmind differ