提交 011e40cc 作者: wangfeng

Merge branch 'yjzx_test' into yjzx_dev

...@@ -17,14 +17,20 @@ WORKDIR /workspace ...@@ -17,14 +17,20 @@ WORKDIR /workspace
COPY --from=builder /workspace/target/*.jar /workspace/app.jar COPY --from=builder /workspace/target/*.jar /workspace/app.jar
ARG ENV_NAME ARG ENV_NAME
ARG NACOS_SERVER
ARG NACOS_NAMESPACE
ARG NACOS_REGISTER_IP
ARG PORT ARG PORT
ENV APP_OPTS1="-Dspring.profiles.active=${ENV_NAME}" ENV APP_OPTS1="-Dspring.profiles.active=${ENV_NAME}"
ENV APP_OPTS2="-Djasypt.encryptor.password=1@wdLkj90#chMsdzxA%2024" ENV APP_OPTS2="-Djasypt.encryptor.password=1@wdLkj90#chMsdzxA%2024"
ENV APP_OPTS3="-Dfile.encoding=utf-8" ENV APP_OPTS3="-Dfile.encoding=utf-8"
ENV APP_OPTS4="-Duser.timezone=Asia/Shanghai" ENV APP_OPTS4="-Duser.timezone=Asia/Shanghai"
ENV APP_OPTS5="-DNACOS_SERVER=${NACOS_SERVER}"
ENV APP_OPTS6="-DNACOS_NAMESPACE=${NACOS_NAMESPACE}"
ENV APP_OPTS7="-DNACOS_REGISTER_IP=${NACOS_REGISTER_IP}"
ENV JVM_OPTS="-Xmx2024M -Xms256M" ENV JVM_OPTS="-Xmx2024M -Xms256M"
EXPOSE ${PORT} EXPOSE ${PORT}
ENTRYPOINT ["sh","-c","java $APP_OPTS1 $APP_OPTS2 $APP_OPTS3 $APP_OPTS4 -jar $JVM_OPTS /workspace/app.jar"] ENTRYPOINT ["sh","-c","java $APP_OPTS1 $APP_OPTS2 $APP_OPTS3 $APP_OPTS4 $APP_OPTS5 $APP_OPTS6 $APP_OPTS7 -jar $JVM_OPTS /workspace/app.jar"]
\ No newline at end of file \ No newline at end of file
...@@ -33,24 +33,27 @@ function handle { ...@@ -33,24 +33,27 @@ function handle {
local username="${repo_username}" local username="${repo_username}"
local passwd="${repo_passwd}" local passwd="${repo_passwd}"
local dir="${root_dir}/${svc_name}/${svc_env}"
local name="${svc_name}-${svc_env}" local name="${svc_name}-${svc_env}"
local version=${version}-${build_timestamp} local version=${version}-${build_timestamp}
# local internal_ip="${internal_ip}"
echo "构建名称: ${name}" echo "构建名称: ${name}"
echo "构建端口: ${svc_port}" echo "构建端口: ${svc_port}"
echo "部署节点: ${internal_ip[@]}"
echo "构建版本: ${version}" echo "构建版本: ${version}"
echo "推送仓库: ${domain}/${namespace}" echo "推送仓库: ${domain}/${namespace}"
echo "完整镜像: ${domain}/${namespace}/${name}:${version}" echo "完整镜像: ${domain}/${namespace}/${name}:${version}"
echo "---构建镜像---" echo "---构建镜像---"
docker build --build-arg ENV_NAME=${svc_env} --build-arg PORT=${svc_port} -f ./build/Dockerfile -t ${domain}/${namespace}/${name}:${version} . docker build --build-arg NACOS_REGISTER_IP=${internal_ip} --build-arg NACOS_SERVER=${nacos_server} --build-arg NACOS_NAMESPACE=${nacos_namespace} \
--build-arg ENV_NAME=${svc_env} --build-arg PORT=${svc_port} -f ./build/Dockerfile -t ${domain}/${namespace}/${name}:${version} .
echo "---推送镜像---" echo "---推送镜像---"
docker login -u=$username -p=${passwd} ${domain} docker login -u=$username -p=${passwd} ${domain}
docker push ${domain}/${namespace}/${name}:${version} docker push ${domain}/${namespace}/${name}:${version}
echo "---清理none镜像---" echo "---清理废弃容器和none镜像---"
docker container prune -f
docker image prune -af docker image prune -af
} }
......
# 镜像仓库 # 镜像仓库
# 版本 T1.0.0: T为测试版,R为稳定版 ## 版本 T1.0.0: T为测试版,R为稳定版
version="R1.0.0" # 可自定义 version="T1.0.0" # 可自定义
# 镜像仓库地址 ## 镜像仓库地址
domain="swr.cn-southwest-2.myhuaweicloud.com" domain="swr.cn-southwest-2.myhuaweicloud.com"
# 镜像分组,按部门区分 ## 镜像分组,按部门区分
namespace="wd" namespace="wd"
# 服务配置 # 服务配置
# 数据挂载根目录 ## 部署节点的内网IP
internal_ip=192.168.0.229
## 数据挂载根目录
root_dir="/zzsn" root_dir="/zzsn"
# 需根据日志配置填写,比如:logback-spring.xml ## 需根据日志配置填写,比如:logback-spring.xml
svc_logs="/workspace/logs" svc_logs="/workspace/logs"
# 环境变量 test or prod ## 环境变量 test or prod
svc_env="prod" svc_env="prod"
# 服务名 ## 服务名
svc_name="think-tank" svc_name="think-tank"
# 服务端口 ## 服务端口
svc_port="9098" svc_port="9099"
# nacos配置
## 往nacos注册IP,配置文件使用变量 NACOS_REGISTER_IP
## nacos服务地址, 配置文件使用 NACOS_SERVER
nacos_server="192.168.0.249:8848"
## nacos命名空间, 配置文件使用 NACOS_NAMESPACE
nacos_namespace="smartProd"
# 资源限制
## cpu
limit_cpu=1.0
limit_mem=2g
# 镜像仓库 # 镜像仓库
# 版本 T1.0.0: T为测试版,R为稳定版 ## 版本 T1.0.0: T为测试版,R为稳定版
version="T1.0.0" # 可自定义 version="T1.0.0" # 可自定义
# 镜像仓库地址 ## 镜像仓库地址
domain="swr.cn-southwest-2.myhuaweicloud.com" domain="swr.cn-southwest-2.myhuaweicloud.com"
# 镜像分组,按部门区分 ## 镜像分组,按部门区分
namespace="wd" namespace="wd"
# 服务配置 # 服务配置
# 数据挂载根目录 ## 部署节点的内网IP
internal_ip=("192.168.0.19" "192.168.0.249")
## 数据挂载根目录
root_dir="/zzsn" root_dir="/zzsn"
# 需根据日志配置填写,比如:logback-spring.xml ## 需根据日志配置填写,比如:logback-spring.xml
svc_logs="/workspace/logs" svc_logs="/workspace/logs"
# 环境变量 test or prod ## 环境变量 test or prod
svc_env="test" svc_env="test"
# 服务名 ## 服务名
svc_name="think-tank" svc_name="think-tank"
# 服务端口 ## 服务端口
svc_port="9099" svc_port="9099"
# nacos配置
## 往nacos注册IP,配置文件使用变量 NACOS_REGISTER_IP
## nacos服务地址, 配置文件使用 NACOS_SERVER
nacos_server="192.168.0.249:8848"
## nacos命名空间, 配置文件使用 NACOS_NAMESPACE
nacos_namespace="smartTest"
# 资源限制
## cpu
limit_cpu=1.0
limit_mem=2g
...@@ -34,26 +34,36 @@ function handle { ...@@ -34,26 +34,36 @@ function handle {
local dir="${root_dir}/${svc_name}/${svc_env}" local dir="${root_dir}/${svc_name}/${svc_env}"
local name="${svc_name}-${svc_env}" local name="${svc_name}-${svc_env}"
local version=${version}-${build_timestamp} local version=${version}-${build_timestamp}
# local internal_ip="${internal_ip}"
local api_key="uOyKfp20pdM3MFhr3KAQBoe1UHCaZLUeeLephB57MPvGXTY05Eis5eaxta6fEtpa"
echo "---运行容器: ${name}:${version}---" echo "---运行容器: ${name}:${version}---"
# 构建 JSON 数据
json_data="{ \
\"container_name\": \"$name\", \
\"image_version\": \"$domain/$namespace/$name:$version\", \
\"ports\": [\"$svc_port:$svc_port\"], \
\"mount_infos\": [\"/etc/localtime:/etc/localtime:ro\", \"$dir/logs:$svc_logs\"], \
\"cpu_count\": $limit_cpu, \
\"memory_limit\": \"$limit_mem\", \
\"ulimit\": \"nofile=65535:65535\" \
}"
docker pull ${domain}/${namespace}/${name}:${version} echo "执行的环境变量: ${env_name}"
# 遍历 internal_ip 数组
if [ "$(docker ps -aqf "name=^${name}")" ]; then for ip in "${internal_ip[@]}"; do
# 如果存在,则停止并删除容器 echo "正在向 $ip 发送请求..."
echo "停止并删除容器: ${name}" # 发送 curl 请求并获取响应
docker rm -f "${name}" response=$(curl -s -X POST -H "Content-Type: application/json" -H "X-API-Key: $api_key" -d "$json_data" "http://$ip:10080/start-container")
else echo "响应结果: ${response}"
echo "容器不存在直接运行: ${name}" # 检查响应中是否包含 "successfully"
fi if echo "$response" | grep -q "successfully"; then
echo "在 $ip 上部署成功"
docker run --restart always -d -p ${svc_port}:${svc_port} --name ${name} \ else
-v /etc/localtime:/etc/localtime:ro \ echo "在 $ip 上部署失败"
-v ${dir}/logs:${svc_logs} \ fi
${domain}/${namespace}/${name}:${version} done
echo "---清理none镜像---"
docker image prune -af
} }
# 主程序入口点 # 主程序入口点
......
...@@ -96,9 +96,14 @@ ...@@ -96,9 +96,14 @@
<!-- 注册中心--> <!-- 注册中心-->
<dependency> <dependency>
<groupId>org.springframework.cloud</groupId> <groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.5.RELEASE</version> <version>2.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.4.RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
......
...@@ -3,13 +3,12 @@ package com.zzsn.thinktank; ...@@ -3,13 +3,12 @@ package com.zzsn.thinktank;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.scheduling.annotation.EnableAsync;
@SpringBootApplication @SpringBootApplication
//@EnableAsync //@EnableAsync
@MapperScan(value = {"com.zzsn.thinktank.mapper*"}) @MapperScan(value = {"com.zzsn.thinktank.mapper*"})
@EnableEurekaClient @EnableDiscoveryClient
public class ThinkTankApplication { public class ThinkTankApplication {
public static void main(String[] args) { public static void main(String[] args) {
......
...@@ -67,10 +67,10 @@ public class WebConfig implements WebMvcConfigurer { ...@@ -67,10 +67,10 @@ public class WebConfig implements WebMvcConfigurer {
} }
@Override @Override
public void addCorsMappings(CorsRegistry registry){ public void addCorsMappings(CorsRegistry registry){
registry.addMapping("/**") // registry.addMapping("/**")
.allowedOrigins("*") // .allowedOrigins("*")
.allowedMethods("*") // .allowedMethods("*")
.allowedHeaders("*"); // .allowedHeaders("*");
} }
} }
\ No newline at end of file
server: server:
port: 9099 port: 9099
eureka: spring:
instance: cloud:
#注册到注册中心通过Feign调用时,hostname必须是服务器ip nacos:
hostname: 1.95.42.138 config:
instance-id: 1.95.42.138:9099 namespace: smartDev
prefer-ip-address: false discovery:
client: namespace: smartDev
register-with-eureka: true
fetch-registry: false
service-url:
defaultZone: http://sasac:Sasac09ckJHyujT!W@192.168.200.226:8017/eureka/
server: server:
port: 9098 port: 9098
eureka: spring:
instance: cloud:
#注册到注册中心通过Feign调用时,hostname必须是服务器ip nacos:
hostname: 1.95.42.138 discovery:
instance-id: 1.95.42.138:9098 ip: ${NACOS_REGISTER_IP}
prefer-ip-address: false port: ${server.port}
client: \ No newline at end of file
register-with-eureka: true
fetch-registry: false
service-url:
defaultZone: http://sasac:BE4cYRvN2WG!YV5z@106.38.99.147:20717/eureka/
\ No newline at end of file
server: server:
port: 9099 port: 9099
eureka: spring:
instance: cloud:
#注册到注册中心通过Feign调用时,hostname必须是服务器ip nacos:
hostname: 1.95.42.138 discovery:
instance-id: 1.95.42.138:9099 ip: ${NACOS_REGISTER_IP}
prefer-ip-address: false port: ${server.port}
client: \ No newline at end of file
register-with-eureka: true
fetch-registry: false
service-url:
#线上测试环境
defaultZone: http://sasac:Sasac09ckJHyujT!W@106.38.99.147:20591/eureka/
\ No newline at end of file
spring:
cloud:
nacos:
config:
server-addr: ${NACOS_SERVER}
username: ZZSN(ZIgriRlkxZ2g3SxM9x6sVYcMQe2QVxXx0/l4BAivWsTeVPkAYERSKxlHxzUwHF5M)
password: ZZSN(zB38iUSsp2RptT9HMrjJ0qGdSJ5iwq3jToor7ozqfMOYTiC6RwOvAxdayF7x9qm/)
file-extension: yml
namespace: ${NACOS_NAMESPACE:smartDev}
discovery:
server-addr: ${NACOS_SERVER}
username: ZZSN(ZIgriRlkxZ2g3SxM9x6sVYcMQe2QVxXx0/l4BAivWsTeVPkAYERSKxlHxzUwHF5M)
password: ZZSN(zB38iUSsp2RptT9HMrjJ0qGdSJ5iwq3jToor7ozqfMOYTiC6RwOvAxdayF7x9qm/)
namespace: ${NACOS_NAMESPACE:smartDev}
jasypt:
encryptor:
property:
prefix: ZZSN(
suffix: )
algorithm: PBEWITHHMACSHA512ANDAES_256
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论