--创建主数据服务启动项目
This commit is contained in:
@ -1,6 +0,0 @@
|
|||||||
██████╗ ███████╗ ██████╗ ██╗████████╗ ██████╗
|
|
||||||
██╔════╝ ██╔════╝██╔════╝ ██║╚══██╔══╝██╔════╝
|
|
||||||
██║ ███╗█████╗ ██║ ███╗█████╗██║ ██║ ██║
|
|
||||||
██║ ██║██╔══╝ ██║ ██║╚════╝██║ ██║ ██║
|
|
||||||
╚██████╔╝███████╗╚██████╔╝ ██║ ██║ ╚██████╗
|
|
||||||
╚═════╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝
|
|
||||||
@ -1,56 +0,0 @@
|
|||||||
server:
|
|
||||||
port: 8099
|
|
||||||
|
|
||||||
spring:
|
|
||||||
application:
|
|
||||||
name: demo-service
|
|
||||||
main:
|
|
||||||
allow-bean-definition-overriding: true
|
|
||||||
profiles:
|
|
||||||
active: dev
|
|
||||||
cloud:
|
|
||||||
nacos: #nacos监控
|
|
||||||
config:
|
|
||||||
server-addr: 10.0.252.1:8848 # nacos 配置中心地址
|
|
||||||
namespace: ITC-MS
|
|
||||||
group: DNE
|
|
||||||
username: nacos
|
|
||||||
password: Yudean@2025
|
|
||||||
file-extension: yml # 默认配置 ${spring.application.name}-${spring.profiles.active}.${file-extension}
|
|
||||||
refresh-enabled: true
|
|
||||||
extension-configs:
|
|
||||||
- data-id: global.yml
|
|
||||||
refresh: true
|
|
||||||
group: DNE
|
|
||||||
|
|
||||||
- data-id: discovery.yml
|
|
||||||
refresh: true
|
|
||||||
group: DNE
|
|
||||||
|
|
||||||
- data-id: datasource.yml
|
|
||||||
refresh: true
|
|
||||||
group: DNE
|
|
||||||
|
|
||||||
- data-id: seata.yml
|
|
||||||
refresh: true
|
|
||||||
group: DNE
|
|
||||||
|
|
||||||
- data-id: redis.yml
|
|
||||||
refresh: true
|
|
||||||
group: DNE
|
|
||||||
|
|
||||||
- data-id: magic-api.yml
|
|
||||||
refresh: true
|
|
||||||
group: DNE
|
|
||||||
|
|
||||||
- data-id: sa-token.yml
|
|
||||||
refresh: true
|
|
||||||
group: DNE
|
|
||||||
|
|
||||||
- data-id: camunda.yml
|
|
||||||
refresh: true
|
|
||||||
group: DNE
|
|
||||||
|
|
||||||
- data-id: sentinel.yml
|
|
||||||
refresh: true
|
|
||||||
group: DNE
|
|
||||||
@ -17,7 +17,7 @@
|
|||||||
<properties>
|
<properties>
|
||||||
<maven.compiler.source>${java.version}</maven.compiler.source>
|
<maven.compiler.source>${java.version}</maven.compiler.source>
|
||||||
<maven.compiler.target>${java.version}</maven.compiler.target>
|
<maven.compiler.target>${java.version}</maven.compiler.target>
|
||||||
<docker-image-name>pcitc/itc-pcitc-mdm</docker-image-name>
|
<docker-image-name>docker.ges.bjgastx.com/itc-pcitc-mdm</docker-image-name>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
@ -30,6 +30,22 @@
|
|||||||
</dependencies>
|
</dependencies>
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
<version>2.7.6</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>repackage</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<!--<classifier>classes</classifier>-->
|
||||||
|
<attach>false</attach>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-surefire-plugin</artifactId>
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
@ -45,6 +61,30 @@
|
|||||||
<target>${java.version}</target>
|
<target>${java.version}</target>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>com.spotify</groupId>
|
||||||
|
<artifactId>docker-maven-plugin</artifactId>
|
||||||
|
<version>1.2.2</version>
|
||||||
|
<configuration>
|
||||||
|
<dockerHost>${docker-registry}</dockerHost>
|
||||||
|
<timeout>600000</timeout>
|
||||||
|
<imageName>${docker-image-name}:${maven.build.timestamp}</imageName>
|
||||||
|
<baseImage>java</baseImage>
|
||||||
|
<dockerDirectory>${dockerDirectory}</dockerDirectory>
|
||||||
|
<pushImage>${docker-image-name}:${maven.build.timestamp}</pushImage>
|
||||||
|
<skipDockerBuild>false</skipDockerBuild>
|
||||||
|
<buildArgs>
|
||||||
|
<SOURCE_NAME>${docker-jar-name}</SOURCE_NAME>
|
||||||
|
</buildArgs>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<targetPath>/</targetPath>
|
||||||
|
<directory>${project.build.directory}</directory>
|
||||||
|
<include>${docker-jar-name}</include>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
<resources>
|
<resources>
|
||||||
<resource>
|
<resource>
|
||||||
|
|||||||
39
itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/docker/Dockerfile
Normal file
39
itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/docker/Dockerfile
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
#FROM --platform=linux/arm64 docker.ges.bjgastx.com/openjdk-arm64:8-jre
|
||||||
|
FROM docker.ges.bjgastx.com/jdk8u112:v1
|
||||||
|
|
||||||
|
|
||||||
|
RUN mkdir -p /root/logs/java/ \
|
||||||
|
&& mkdir -p /scm/logs/ \
|
||||||
|
&& mkdir -p /opt/app/ \
|
||||||
|
&& mkdir -p /uploadFile/ \
|
||||||
|
&& mkdir -p /var/log/app \
|
||||||
|
&& mkdir -p /opt/app/logs \
|
||||||
|
&& mkdir -p /opt/agent/config
|
||||||
|
|
||||||
|
ENV TZ "Asia/Shanghai"
|
||||||
|
|
||||||
|
ADD ./skywalking-agent.jar /opt/agent/skywalking-agent.jar
|
||||||
|
ADD ./agent.config /opt/agent/config/agent.config
|
||||||
|
|
||||||
|
RUN echo "set fileencodings=utf-8,gbk,gb2312,gb18030,cp936,latin1 \n set fenc=utf-8 \n set tenc=utf-8 \n set enc=utf-8 \n" |tee ~/.vimrc
|
||||||
|
|
||||||
|
|
||||||
|
ARG JAR_FILE
|
||||||
|
ARG PRO_FILE
|
||||||
|
ARG SOURCE_NAME
|
||||||
|
|
||||||
|
ADD ./startApp.sh /opt/app/
|
||||||
|
RUN chmod u+x /opt/app/*.sh
|
||||||
|
ADD ./${SOURCE_NAME} /opt/app/app.jar
|
||||||
|
RUN test -f /opt/app/app.jar || { echo "Error: JAR file not found at ${SOURCE_NAME}"; exit 1; }
|
||||||
|
|
||||||
|
#应用名称
|
||||||
|
ENV APP_NAME=itc-pcitc-mdm
|
||||||
|
#skywalking-oap-server地址
|
||||||
|
ENV SKYWALKING_SERVER=10.10.2.102:11800
|
||||||
|
ENV ENV_APP_FILE_PATH=/opt/app/app.jar
|
||||||
|
ENV ENV_APP_PRO_FILE=local
|
||||||
|
|
||||||
|
EXPOSE 8096 5005
|
||||||
|
|
||||||
|
ENTRYPOINT ["/opt/app/startApp.sh"]
|
||||||
126
itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/docker/docker-mdm.sh
Normal file
126
itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/docker/docker-mdm.sh
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 定义变量
|
||||||
|
CONTAINER_NAME="itc-pcitc-mdm"
|
||||||
|
IMAGE_NAME="10.10.2.102/itc-pcitc-mdm"
|
||||||
|
IMAGE_VERSION="2025-08-04-0940"
|
||||||
|
IMAGE_FULL="$IMAGE_NAME:$IMAGE_VERSION"
|
||||||
|
PORT=8096 # 服务暴露端口
|
||||||
|
CONTAINER_PORT=8096 # 服务暴露端口
|
||||||
|
TZ="Asia/Shanghai" # 时区设置
|
||||||
|
# 环境变量配置
|
||||||
|
ENV_APP_PRO_FILE="local"
|
||||||
|
file="$CONTAINER_NAME-version.txt"
|
||||||
|
|
||||||
|
# 检查文件是否存在(假设 $file 是目标文件变量,已在别处定义)
|
||||||
|
if [ ! -f "$file" ]; then
|
||||||
|
echo "文件 $file 不存在"
|
||||||
|
touch "$file" # 变量加引号,处理含空格的文件名
|
||||||
|
echo "$IMAGE_FULL" >> "$file"
|
||||||
|
echo "记录版本【$IMAGE_FULL】到 $file"
|
||||||
|
else
|
||||||
|
# 检查参数数量(建议移到脚本开头统一检查)
|
||||||
|
if [ $# -eq 2 ]; then
|
||||||
|
IMAGE_FULL="$IMAGE_NAME:$2"
|
||||||
|
echo "$IMAGE_FULL" >> "$file"
|
||||||
|
echo "记录版本【$IMAGE_FULL】到 $file"
|
||||||
|
else
|
||||||
|
# 修正赋值语法:等号两侧无空格
|
||||||
|
last_version=$(tail -n 1 "$file")
|
||||||
|
IMAGE_FULL="$last_version"
|
||||||
|
# 建议添加对 $IMAGE_FULL 的后续处理(如使用该变量)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 显示帮助信息
|
||||||
|
show_help() {
|
||||||
|
echo "使用方法: $0 [操作类型]"
|
||||||
|
echo "操作类型:"
|
||||||
|
echo " deploy - 部署并启动服务容器"
|
||||||
|
echo " remove - 停止并删除容器及数据/日志目录"
|
||||||
|
echo " logs - 查看容器日志"
|
||||||
|
echo " help - 显示帮助信息"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# 部署服务
|
||||||
|
deploy_service() {
|
||||||
|
echo "部署镜像【$IMAGE_FULL】"
|
||||||
|
# 检查容器是否已存在,存在则停止并删除
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "停止并删除现有容器: $CONTAINER_NAME"
|
||||||
|
docker stop $CONTAINER_NAME >/dev/null
|
||||||
|
docker rm $CONTAINER_NAME >/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 启动服务容器
|
||||||
|
echo "启动服务容器..."
|
||||||
|
docker run -d --privileged --restart always \
|
||||||
|
--name $CONTAINER_NAME \
|
||||||
|
-p $PORT:$CONTAINER_PORT \
|
||||||
|
-e ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE \
|
||||||
|
$IMAGE_FULL
|
||||||
|
|
||||||
|
# 检查启动状态
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME -f status=running)" ]; then
|
||||||
|
echo "服务启动成功!"
|
||||||
|
echo "容器名称: $CONTAINER_NAME"
|
||||||
|
echo "访问地址: http://localhost:$PORT"
|
||||||
|
echo "环境变量: ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE"
|
||||||
|
else
|
||||||
|
echo "服务启动失败,日志如下:"
|
||||||
|
docker logs $CONTAINER_NAME
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 删除服务
|
||||||
|
remove_service() {
|
||||||
|
# 检查容器是否存在
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "停止容器: $CONTAINER_NAME"
|
||||||
|
docker stop $CONTAINER_NAME >/dev/null
|
||||||
|
|
||||||
|
echo "删除容器: $CONTAINER_NAME"
|
||||||
|
docker rm $CONTAINER_NAME >/dev/null
|
||||||
|
else
|
||||||
|
echo "容器 $CONTAINER_NAME 不存在"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 查看日志
|
||||||
|
show_logs() {
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "查看 $CONTAINER_NAME 容器日志 (按 Ctrl+C 退出)..."
|
||||||
|
docker logs -f --tail 200 $CONTAINER_NAME
|
||||||
|
else
|
||||||
|
echo "容器 $CONTAINER_NAME 不存在"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主逻辑
|
||||||
|
if [ $# -lt 1 ]; then
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
deploy)
|
||||||
|
deploy_service
|
||||||
|
;;
|
||||||
|
remove)
|
||||||
|
remove_service
|
||||||
|
;;
|
||||||
|
logs)
|
||||||
|
show_logs
|
||||||
|
;;
|
||||||
|
help)
|
||||||
|
show_help
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "无效的操作类型: $1"
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@ -2,11 +2,11 @@ spring:
|
|||||||
cloud:
|
cloud:
|
||||||
nacos: #nacos监控
|
nacos: #nacos监控
|
||||||
config:
|
config:
|
||||||
server-addr: 47.94.165.164:8848 # nacos 配置中心地址
|
server-addr: 127.0.0.1:8848 # nacos 配置中心地址
|
||||||
namespace: ITC-MS
|
namespace: ITC-MS
|
||||||
group: DNE
|
group: DNE
|
||||||
username: nacos
|
username: nacos
|
||||||
password: Lng@123
|
password: nacos
|
||||||
extension-configs:
|
extension-configs:
|
||||||
- data-id: global-dev.yml
|
- data-id: global-dev.yml
|
||||||
refresh: true
|
refresh: true
|
||||||
@ -42,4 +42,12 @@ spring:
|
|||||||
|
|
||||||
- data-id: sentinel-dev.yml
|
- data-id: sentinel-dev.yml
|
||||||
refresh: true
|
refresh: true
|
||||||
group: DNE
|
group: DNE
|
||||||
|
|
||||||
|
xjrsoft:
|
||||||
|
generate:
|
||||||
|
apiJavaPath: F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-api
|
||||||
|
javaPath: F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service
|
||||||
|
webPath: F:\ges-scm\code\dev\geg-gas-web
|
||||||
|
appPath: D:\pm\yfxm-newgit\uniapp\xjrsoft-uni #前端app
|
||||||
|
|
||||||
@ -2,7 +2,7 @@ spring:
|
|||||||
cloud:
|
cloud:
|
||||||
nacos: #nacos监控
|
nacos: #nacos监控
|
||||||
config:
|
config:
|
||||||
server-addr: 127.0.0.1:8848 # nacos 配置中心地址
|
server-addr: 172.20.0.4:8848 # nacos 配置中心地址
|
||||||
namespace: ITC-MS
|
namespace: ITC-MS
|
||||||
group: DNE
|
group: DNE
|
||||||
username: nacos
|
username: nacos
|
||||||
@ -42,8 +42,4 @@ spring:
|
|||||||
|
|
||||||
- data-id: sentinel-local.yml
|
- data-id: sentinel-local.yml
|
||||||
refresh: true
|
refresh: true
|
||||||
group: DNE
|
group: DNE
|
||||||
|
|
||||||
datalog:
|
|
||||||
db:
|
|
||||||
url: jdbc:kingbase8://127.0.0.1:54321/itc?currentSchema=dne_log_sit
|
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
spring:
|
||||||
|
cloud:
|
||||||
|
nacos: #nacos监控
|
||||||
|
config:
|
||||||
|
server-addr: 10.4.126.114:8848 # nacos 配置中心地址
|
||||||
|
namespace: ITC-MS
|
||||||
|
group: DNE
|
||||||
|
username: nacos
|
||||||
|
password: Lng@123
|
||||||
@ -1,9 +1,9 @@
|
|||||||
server:
|
server:
|
||||||
port: 8099
|
port: 8096
|
||||||
|
|
||||||
spring:
|
spring:
|
||||||
application:
|
application:
|
||||||
name: demo-service
|
name: pcitc-mdm-service
|
||||||
main:
|
main:
|
||||||
allow-bean-definition-overriding: true
|
allow-bean-definition-overriding: true
|
||||||
profiles:
|
profiles:
|
||||||
|
|||||||
39
itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/Dockerfile
Normal file
39
itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/Dockerfile
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
#FROM --platform=linux/arm64 docker.ges.bjgastx.com/openjdk-arm64:8-jre
|
||||||
|
FROM docker.ges.bjgastx.com/jdk8u112:v1
|
||||||
|
|
||||||
|
|
||||||
|
RUN mkdir -p /root/logs/java/ \
|
||||||
|
&& mkdir -p /scm/logs/ \
|
||||||
|
&& mkdir -p /opt/app/ \
|
||||||
|
&& mkdir -p /uploadFile/ \
|
||||||
|
&& mkdir -p /var/log/app \
|
||||||
|
&& mkdir -p /opt/app/logs \
|
||||||
|
&& mkdir -p /opt/agent/config
|
||||||
|
|
||||||
|
ENV TZ "Asia/Shanghai"
|
||||||
|
|
||||||
|
ADD ./skywalking-agent.jar /opt/agent/skywalking-agent.jar
|
||||||
|
ADD ./agent.config /opt/agent/config/agent.config
|
||||||
|
|
||||||
|
RUN echo "set fileencodings=utf-8,gbk,gb2312,gb18030,cp936,latin1 \n set fenc=utf-8 \n set tenc=utf-8 \n set enc=utf-8 \n" |tee ~/.vimrc
|
||||||
|
|
||||||
|
|
||||||
|
ARG JAR_FILE
|
||||||
|
ARG PRO_FILE
|
||||||
|
ARG SOURCE_NAME
|
||||||
|
|
||||||
|
ADD ./startApp.sh /opt/app/
|
||||||
|
RUN chmod u+x /opt/app/*.sh
|
||||||
|
ADD ./${SOURCE_NAME} /opt/app/app.jar
|
||||||
|
RUN test -f /opt/app/app.jar || { echo "Error: JAR file not found at ${SOURCE_NAME}"; exit 1; }
|
||||||
|
|
||||||
|
#应用名称
|
||||||
|
ENV APP_NAME=itc-pcitc-mdm
|
||||||
|
#skywalking-oap-server地址
|
||||||
|
ENV SKYWALKING_SERVER=10.10.2.102:11800
|
||||||
|
ENV ENV_APP_FILE_PATH=/opt/app/app.jar
|
||||||
|
ENV ENV_APP_PRO_FILE=local
|
||||||
|
|
||||||
|
EXPOSE 8096 5005
|
||||||
|
|
||||||
|
ENTRYPOINT ["/opt/app/startApp.sh"]
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
# 应用名称(在 SkyWalking UI 中显示的服务名)
|
||||||
|
agent.service_name=your-springboot-app
|
||||||
|
# SkyWalking OAP 服务地址(默认本地)
|
||||||
|
collector.backend_service=localhost:11800
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
spring:
|
||||||
|
cloud:
|
||||||
|
nacos: #nacos监控
|
||||||
|
config:
|
||||||
|
server-addr: 10.4.126.114:8848 # nacos 配置中心地址
|
||||||
|
namespace: ITC-MS
|
||||||
|
group: DNE
|
||||||
|
username: nacos
|
||||||
|
password: Lng@123
|
||||||
@ -1,9 +1,9 @@
|
|||||||
server:
|
server:
|
||||||
port: 8099
|
port: 8096
|
||||||
|
|
||||||
spring:
|
spring:
|
||||||
application:
|
application:
|
||||||
name: demo-service
|
name: pcitc-mdm-service
|
||||||
main:
|
main:
|
||||||
allow-bean-definition-overriding: true
|
allow-bean-definition-overriding: true
|
||||||
profiles:
|
profiles:
|
||||||
126
itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/docker-mdm.sh
Normal file
126
itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/docker-mdm.sh
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 定义变量
|
||||||
|
CONTAINER_NAME="itc-pcitc-mdm"
|
||||||
|
IMAGE_NAME="10.10.2.102/itc-pcitc-mdm"
|
||||||
|
IMAGE_VERSION="2025-08-04-0940"
|
||||||
|
IMAGE_FULL="$IMAGE_NAME:$IMAGE_VERSION"
|
||||||
|
PORT=8096 # 服务暴露端口
|
||||||
|
CONTAINER_PORT=8096 # 服务暴露端口
|
||||||
|
TZ="Asia/Shanghai" # 时区设置
|
||||||
|
# 环境变量配置
|
||||||
|
ENV_APP_PRO_FILE="local"
|
||||||
|
file="$CONTAINER_NAME-version.txt"
|
||||||
|
|
||||||
|
# 检查文件是否存在(假设 $file 是目标文件变量,已在别处定义)
|
||||||
|
if [ ! -f "$file" ]; then
|
||||||
|
echo "文件 $file 不存在"
|
||||||
|
touch "$file" # 变量加引号,处理含空格的文件名
|
||||||
|
echo "$IMAGE_FULL" >> "$file"
|
||||||
|
echo "记录版本【$IMAGE_FULL】到 $file"
|
||||||
|
else
|
||||||
|
# 检查参数数量(建议移到脚本开头统一检查)
|
||||||
|
if [ $# -eq 2 ]; then
|
||||||
|
IMAGE_FULL="$IMAGE_NAME:$2"
|
||||||
|
echo "$IMAGE_FULL" >> "$file"
|
||||||
|
echo "记录版本【$IMAGE_FULL】到 $file"
|
||||||
|
else
|
||||||
|
# 修正赋值语法:等号两侧无空格
|
||||||
|
last_version=$(tail -n 1 "$file")
|
||||||
|
IMAGE_FULL="$last_version"
|
||||||
|
# 建议添加对 $IMAGE_FULL 的后续处理(如使用该变量)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 显示帮助信息
|
||||||
|
show_help() {
|
||||||
|
echo "使用方法: $0 [操作类型]"
|
||||||
|
echo "操作类型:"
|
||||||
|
echo " deploy - 部署并启动服务容器"
|
||||||
|
echo " remove - 停止并删除容器及数据/日志目录"
|
||||||
|
echo " logs - 查看容器日志"
|
||||||
|
echo " help - 显示帮助信息"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# 部署服务
|
||||||
|
deploy_service() {
|
||||||
|
echo "部署镜像【$IMAGE_FULL】"
|
||||||
|
# 检查容器是否已存在,存在则停止并删除
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "停止并删除现有容器: $CONTAINER_NAME"
|
||||||
|
docker stop $CONTAINER_NAME >/dev/null
|
||||||
|
docker rm $CONTAINER_NAME >/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 启动服务容器
|
||||||
|
echo "启动服务容器..."
|
||||||
|
docker run -d --privileged --restart always \
|
||||||
|
--name $CONTAINER_NAME \
|
||||||
|
-p $PORT:$CONTAINER_PORT \
|
||||||
|
-e ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE \
|
||||||
|
$IMAGE_FULL
|
||||||
|
|
||||||
|
# 检查启动状态
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME -f status=running)" ]; then
|
||||||
|
echo "服务启动成功!"
|
||||||
|
echo "容器名称: $CONTAINER_NAME"
|
||||||
|
echo "访问地址: http://localhost:$PORT"
|
||||||
|
echo "环境变量: ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE"
|
||||||
|
else
|
||||||
|
echo "服务启动失败,日志如下:"
|
||||||
|
docker logs $CONTAINER_NAME
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 删除服务
|
||||||
|
remove_service() {
|
||||||
|
# 检查容器是否存在
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "停止容器: $CONTAINER_NAME"
|
||||||
|
docker stop $CONTAINER_NAME >/dev/null
|
||||||
|
|
||||||
|
echo "删除容器: $CONTAINER_NAME"
|
||||||
|
docker rm $CONTAINER_NAME >/dev/null
|
||||||
|
else
|
||||||
|
echo "容器 $CONTAINER_NAME 不存在"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 查看日志
|
||||||
|
show_logs() {
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "查看 $CONTAINER_NAME 容器日志 (按 Ctrl+C 退出)..."
|
||||||
|
docker logs -f --tail 200 $CONTAINER_NAME
|
||||||
|
else
|
||||||
|
echo "容器 $CONTAINER_NAME 不存在"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主逻辑
|
||||||
|
if [ $# -lt 1 ]; then
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
deploy)
|
||||||
|
deploy_service
|
||||||
|
;;
|
||||||
|
remove)
|
||||||
|
remove_service
|
||||||
|
;;
|
||||||
|
logs)
|
||||||
|
show_logs
|
||||||
|
;;
|
||||||
|
help)
|
||||||
|
show_help
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "无效的操作类型: $1"
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
50
itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/startApp.sh
Normal file
50
itc-pcitc-mdm/itc-pcitc-mdm-start/target/classes/startApp.sh
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#cp /etc/hosts /etc/hosts.temp
|
||||||
|
|
||||||
|
# 初始化环境变量(设置默认值,避免空变量)
|
||||||
|
APP_NAME=${APP_NAME:-"default-springboot-app"} # 默认服务名
|
||||||
|
SKYWALKING_SERVER=${SKYWALKING_SERVER:-"localhost:11800"} # 默认SkyWalking服务地址
|
||||||
|
ENV_APP_PRO_FILE=${ENV_APP_PRO_FILE:-"test"} # 默认环境为test
|
||||||
|
|
||||||
|
# 初始化Java启动参数(包含是否使用-server模式)
|
||||||
|
java_base="java -javaagent:/opt/agent/skywalking-agent.jar -Dskywalking.agent.service_name=$APP_NAME"
|
||||||
|
export java_base="$java_base -Dskywalking.collector.backend_service=$SKYWALKING_SERVER"
|
||||||
|
|
||||||
|
java_start="$java_base -jar"
|
||||||
|
|
||||||
|
# 根据环境变量区分开发/生产环境配置
|
||||||
|
if [ "$ENV_APP_PRO_FILE" = "prod" ]; then
|
||||||
|
# 生产环境JVM参数
|
||||||
|
export JAVA_OPTS="-Xms1024m -Xmx4096m -Xmn512m -Xss512k -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:G1HeapRegionSize=32m -XX:G1ReservePercent=20"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:MaxGCPauseMillis=500 -XX:G1MixedGCCountTarget=10"
|
||||||
|
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -verbose:gc -Xloggc:/var/log/app/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M"
|
||||||
|
|
||||||
|
# 生产环境使用-server模式
|
||||||
|
java_start="$java_base -jar -server"
|
||||||
|
else
|
||||||
|
# 开发环境JVM参数
|
||||||
|
export JAVA_OPTS="-Xms512m -Xmx2048m -Xmn256m -Xss512k -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC -XX:+UseParNewGC"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:+CMSParallelRemarkEnabled -XX:+CMSClassUnloadingEnabled -XX:CMSMaxAbortablePrecleanTime=5000"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -verbose:gc -Xloggc:./logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps"
|
||||||
|
# 开发环境开启远程调试
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 公共配置(编码、时区等)
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8 -Dconsole.encoding=UTF-8"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -Duser.language=zh -Duser.country=CN -Duser.timezone=Asia/Shanghai"
|
||||||
|
|
||||||
|
# SpringBoot 环境配置
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=$ENV_APP_PRO_FILE"
|
||||||
|
|
||||||
|
# 输出启动参数
|
||||||
|
echo "启动参数:$java_start $JAVA_OPTS $ENV_APP_FILE_PATH"
|
||||||
|
|
||||||
|
# 执行启动命令(用双引号包裹每个变量)
|
||||||
|
exec $java_start $JAVA_OPTS $ENV_APP_FILE_PATH
|
||||||
Reference in New Issue
Block a user