main
wubin 12 months ago
commit f7f0bf649d

@ -7,29 +7,9 @@ WORKDIR /root
ENV TZ=Asia/Shanghai
# 将target文件夹下的jar包gw-charge.jar复制到容器的/root目录下
COPY ./target/ZhuQue-1.0.jar /root/ZhuQue-1.0.jar
COPY ./ZhuQue /root/ZhuQue
# 每个参数的含义:
#-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 JAVA_OPTS="-Xms2048m -Xmx4096m"
# 这行指令设置了名为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容器使用shShell来执行后面的命令字符串。-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" ]
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -cp /root/ZhuQue/target/classes:/root/ZhuQue/lib/* com.dsideal.ZhuQue.Start" ]

@ -36,9 +36,7 @@ public class IsLoginInterceptor implements Interceptor {
inv.invoke();
}
//1、读取Session
boolean isTrue = true;
HttpServletRequest request = con.getRequest();
//从Http请求头中获取Authorization
String Authorization = request.getHeader("Authorization");

@ -2,7 +2,6 @@
driverClassName=com.mysql.jdbc.Driver
user=root
password=DsideaL147258369
# 长春市
jdbcUrl=jdbc:mysql://10.10.14.210:22066/yltcharge?useUnicode=true&characterEncoding=GBK&useSSL=false
# redis

@ -1,7 +1,7 @@
#!/bin/bash
# 启动入口类,该脚本文件用于别的项目时要改这里
MAIN_CLASS=com.dsideal.QingLong.Start
MAIN_CLASS=com.dsideal.ZhuQue.Start
# Java 命令行参数,根据需要开启下面的配置,改成自己需要的,注意等号前后不能有空格
@ -13,7 +13,7 @@ export PATH=${JAVA_HOME}/bin:$PATH
JAVA_OPTS="-Xms2048m -Xmx4096m"
# 生成 class path 值
CP=.:/usr/local/tomcat8/webapps/QingLong/WEB-INF/lib/*
CP=.:/usr/local/tomcat8/webapps/ZhuQue/WEB-INF/lib/*
# 运行为后台进程,并且将信息输出到 logback.xml配置的日志文件位置
nohup java ${JAVA_OPTS} -cp ${CP} ${MAIN_CLASS} >> /dev/null 2>&1 &

@ -1,7 +1,7 @@
#!/bin/bash
# 启动入口类,该脚本文件用于别的项目时要改这里
MAIN_CLASS=com.dsideal.QingLong.Start
MAIN_CLASS=com.dsideal.ZhuQue.Start
# kill 命令不使用 -9 参数时,会回调 onStop() 方法,确定不需要此回调建议使用 -9 参数
kill -9 `pgrep -f ${MAIN_CLASS}` 2>/dev/null

@ -33,37 +33,28 @@ EOF
systemctl daemon-reload
```
#### 3、启动$Docker$
#### 3、常用命令
```shell
# 启动Docker
systemctl start docker
```
#### 4、卸载 $Docker$
```shell
# 卸载Docker
yum remove docker-ce
```
#### 5、删除镜像、容器、配置文件等内容
```
# 删除镜像、容器、配置文件等内容
rm -rf /var/lib/docker
```
### 二、镜像管理
### 二、镜像
#### 查看可用版本
**查看可用版本**
```
docker search tomcat
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408061429398.png)
#### 下载$Tomcat$镜像
**下载$Tomcat$镜像**
```
docker pull tomcat # 下载最新版本的Tomcat
@ -73,15 +64,13 @@ docker pull tomcat:9.0 # 下载9.0版本的Tomcat
docker pull tomcat:8.0 # 下载8.0版本的Tomcat
```
#### 查看本地已下载好的镜像
**查看本地镜像**
```
docker images
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408070750107.png)
#### 删除本地下载好的镜像
**删除本地下载好的镜像**
```
docker rmi -f <IMAGE_NAME_OR_ID>
@ -89,7 +78,7 @@ docker rmi -f <IMAGE_NAME_OR_ID>
### 三、容器管理
### 三、容器
#### 1、运行容器
@ -97,9 +86,7 @@ docker rmi -f <IMAGE_NAME_OR_ID>
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 端口
@ -108,60 +95,34 @@ docker run --name tomcat -p 8080:8080 -v $PWD/test:/usr/local/tomcat/webapps/tes
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
docker exec -it 4bf2bd13f5b0 /bin/bash
```
#### 5、将文件复制到容器外
```
docker cp openjdk1.8:/usr/local/1.txt ./
docker cp 4bf2bd13f5b0:/usr/local/1.txt ./
```
#### 6、将文件复制回容器
```
docker cp ./1.txt openjdk1.8:/usr/local/
docker cp ./1.txt 4bf2bd13f5b0:/usr/local/
```
@ -170,7 +131,7 @@ docker cp ./1.txt openjdk1.8:/usr/local/
> $dockerfile$ 内容如下:
```
```shell
# 指定了使用openjdk:8u332-jre-slim-bullseye镜像作为基础镜像并且给这个镜像起了一个别名runner
FROM openjdk:8u332-jre-slim-bullseye AS runner
@ -246,7 +207,7 @@ docker build -t gw-charge .
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408070821581.png)
##### 查看本地是不是多了一个镜像
##### 本地多了一个镜像
```
docker images
@ -264,15 +225,15 @@ docker run -d -p 7001:7001 gw-charge
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408070824703.png)
#### 查看正在运行的容器
#### 查看容器
```
docker ps
docker ps -a
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408070848284.png)
#### 查看$Docker$日志
#### 查看日志
```
docker logs c128a94e5884
@ -286,6 +247,8 @@ http://10.10.14.212:7001
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408070839957.png)
### 五、未来可能的操作
```
# 拷贝出来做备份
docker cp b30008f6e67d:/root/gw-charge.jar ./gw-charge-backup.jar
@ -300,7 +263,7 @@ docker restart b30008f6e67d
docker ps
```
#### 五、查看容器的启动脚本(或命令)
#### 查看容器的启动脚本(或命令)
```
docker inspect --format '{{.Config.Entrypoint}}' b30008f6e67d
@ -337,27 +300,21 @@ root@b30008f6e67d:~# echo $JAVA_OPTS
#### 六、安装$OpenJDK 21$
#### 安装$OpenJDK 21$
```
docker pull openjdk:21
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408071459496.png)
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408071459474.png)
删除镜像
**删除镜像**
```
docker rmi -f 079114de2be1
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408071500628.png)
#### 六、实测阿里云容器服务
### 六、实测阿里云容器服务
> **参考文档**[使用个人版实例推送拉取Docker镜像_容器镜像服务(ACR)](https://help.aliyun.com/zh/acr/user-guide/use-a-container-registry-personal-edition-instance-to-push-and-pull-images?spm=a2c4g.11186623.0.0.631a1ecdldRK92)
@ -398,5 +355,44 @@ d279e3a2f938: Pushed
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408071648987.png)
#### 新写的模块打包发布
```
# 生成镜像
docker build -t jfinal .
# 查看镜像
docker images
# 删除镜像
docker rmi -f <IMAGE_NAME_OR_ID>
# 运行容器
docker run --name jfinal -p 8888:8888 -d jfinal
# 查看日志
docker logs d70ce374a7ad
# 删除容器
docker rm -f 8ed8d718533e
# 查看容器
docker ps -a
# 进入容器
docker exec -it d70ce374a7ad /bin/bash
# 重启容器
docker restart d70ce374a7ad
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408080740519.png)
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408080742503.png)

Loading…
Cancel
Save