分布式部署
服务打包
在项目根目录创建以下脚本并执行。
- windows环境shell
@echo off rem 本地Maven安装路径 set Path=%Path%;"D:\Program Files\apache-maven-4.0.0\bin" rem 本地JDK安装路径 set JAVA_HOME=D:\Program Files\Java\jdk-17.0.8 rem 本地仓库路径 set LOCAL_MAVEN_REPO="D:\MavenRepo" cd gateway call mvn -Dmaven.repo.local=%LOCAL_MAVEN_REPO% clean package cd ../auth call mvn -Dmaven.repo.local=%LOCAL_MAVEN_REPO% clean package cd ../server call mvn -Dmaven.repo.local=%LOCAL_MAVEN_REPO% clean package cd ../lite call mvn -Dmaven.repo.local=%LOCAL_MAVEN_REPO% clean package
- Linux环境shell
#!/bin/bash # 本地Maven安装路径 export PATH=$PATH;/root/apache-maven-4.0.0/bin # 本地JDK安装路径 export JAVA_HOME=/root/Java/jdk-17.0.8 # 本地仓库路径 export LOCAL_MAVEN_REPO=/root/MavenRepo cd gateway call mvn -Dmaven.repo.local=$LOCAL_MAVEN_REPO clean package cd ../auth call mvn -Dmaven.repo.local=$LOCAL_MAVEN_REPO% clean package cd ../server call mvn -Dmaven.repo.local=$LOCAL_MAVEN_REPO% clean package cd ../lite call mvn -Dmaven.repo.local=$LOCAL_MAVEN_REPO% clean package
服务部署
网关服务
- 在jar包所在目录下创建Dockerfile,填入以下内容。dockerfile
FROM openjdk:17 ADD gateway.jar /opt/iking/gateway.jar RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone ENV JAVA_OPS="--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/sun.net.util=ALL-UNNAMED" EXPOSE 8000 CMD cd /opt/iking && java -jar ${JAVA_OPS} gateway.jar
- 在jar包所在目录执行
docker build
命令进行镜像制作。shelldocker build -f Dockerfile -t gateway .
- 执行docker run命令启动服务。shell
docker run -d --name gateway -p 8000:8000\ -e SRV_PORT=8000\ -e SRV_ADDRESS=x.x.x.x\ -e ENV=dev\ --restart=always\ gateway
- 您也可以创建Dockerfile后,在jar包所在目录下创建以下脚本来启动服务。shell
#!/bin/bash docker stop gateway || true docker rm gateway || true docker rmi gateway || true docker build -f Dockerfile -t gateway: . docker run -d --name gateway -p 8000:8000\ -e SRV_PORT=8000\ -e SRV_ADDRESS=x.x.x.x\ -e DISCOVERY_SRV_ADDR=x.x.x.x:8848\ -e SERVICE_GROUP=DEFAULT_GROUP\ -e ENV=dev\ --restart=always\ gateway
系统服务
- 在jar包所在目录下创建Dockerfile,填入以下内容。dockerfile
FROM openjdk:17 ADD server.jar /opt/iking/server.jar RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone ENV JAVA_OPS="-Ddruid.wall.multiStatementAllow=true --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/sun.net.util=ALL-UNNAMED" EXPOSE 6010 CMD cd /opt/iking && java -jar ${JAVA_OPS} server.jar
- 在jar包所在目录执行
docker build
命令进行镜像制作。shelldocker build -f Dockerfile -t server .
- 执行docker run命令启动服务。shell
docker run -d --name server -p 6010:6010\ -e SRV_PORT=6010\ -e SRV_ADDRESS=x.x.x.x\ -e DISCOVERY_SRV_ADDR=x.x.x.x:8848\ -e SERVICE_GROUP=DEFAULT_GROUP\ -e ENV=dev\ --restart=always\ server
- 您也可以创建Dockerfile后,在jar包所在目录下创建以下脚本来启动服务。shell
#!/bin/bash docker stop server || true docker rm server || true docker rmi server || true docker build -f Dockerfile -t server: . docker run -d --name server -p 6010:6010\ -e SRV_PORT=6010\ -e SRV_ADDRESS=x.x.x.x\ -e DISCOVERY_SRV_ADDR=x.x.x.x:8848\ -e SERVICE_GROUP=DEFAULT_GROUP\ -e ENV=dev\ --restart=always\ server
认证服务
- 在jar包所在目录下创建Dockerfile,填入以下内容。dockerfile
FROM openjdk:17 ADD auth.jar /opt/iking/auth.jar RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone ENV JAVA_OPS="--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/sun.net.util=ALL-UNNAMED" EXPOSE 7010 CMD cd /opt/iking && java -jar ${JAVA_OPS} auth.jar
- 在jar包所在目录执行
docker build
命令进行镜像制作。shelldocker build -f Dockerfile -t auth .
- 执行docker run命令启动服务。shell
docker run -d --name auth -p 7010:7010\ -e SRV_PORT=7010\ -e SRV_ADDRESS=x.x.x.x\ -e DISCOVERY_SRV_ADDR=x.x.x.x:8848\ -e SERVICE_GROUP=DEFAULT_GROUP\ -e ENV=dev\ --restart=always\ auth
- 您也可以创建Dockerfile后,在jar包所在目录下创建以下脚本来启动服务。shell
#!/bin/bash docker stop lite || true docker rm lite || true docker rmi lite || true docker build -f Dockerfile -t lite . docker run -d --name auth -p 7010:7010\ -e SRV_PORT=7010\ -e SRV_ADDRESS=x.x.x.x\ -e DISCOVERY_SRV_ADDR=x.x.x.x:8848\ -e SERVICE_GROUP=DEFAULT_GROUP\ -e ENV=dev\ --restart=always\ auth
业务服务
- 在jar包所在目录下创建Dockerfile,填入以下内容。dockerfile
FROM openjdk:17 ADD biz-demo.jar /opt/iking/biz-demo.jar RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone ENV JAVA_OPS="-Ddruid.wall.multiStatementAllow=true --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/sun.net.util=ALL-UNNAMED" EXPOSE 9010 CMD cd /opt/iking && java -jar ${JAVA_OPS} biz-demo.jar
- 在jar包所在目录执行
docker build
命令进行镜像制作。shelldocker build -f Dockerfile -t biz-demo .
- 执行docker run命令启动服务。shell
docker run -d --name biz-demo -p 9010:9010\ -e SRV_PORT=9010\ -e SRV_ADDRESS=x.x.x.x\ -e DISCOVERY_SRV_ADDR=x.x.x.x:8848\ -e SERVICE_GROUP=DEFAULT_GROUP\ -e ENV=dev\ --restart=always\ biz-demo
- 您也可以创建Dockerfile后,在jar包所在目录下创建以下脚本来启动服务。shell
#!/bin/bash docker stop biz-demo || true docker rm biz-demo || true docker rmi biz-demo || true docker build -f Dockerfile -t biz-demo: . docker run -d --name biz-demo -p 9010:9010\ -e SRV_PORT=9010\ -e SRV_ADDRESS=x.x.x.x\ -e DISCOVERY_SRV_ADDR=x.x.x.x:8848\ -e SERVICE_GROUP=DEFAULT_GROUP\ -e ENV=dev\ --restart=always\ biz-demo
💥 Oracle数据库注意
如果采用Oracle数据库,需要修改durid配置:
yaml
spring:
datasource:
druid:
filter:
config:
enabled: true
wall:
enabled: true
config:
variantCheck: false
noneBaseStatementAllow: true
commentAllow: true
multiStatementAllow: true
因为flyway需要获取数据库用户,因此会执行:SELECT USER FROM DUAL等相关操作,涉及到oracle中的关键字USER,因此倒置执行失败,需要开启druid的防火墙过滤,并关闭variantCheck