上节课我们在Docker环境中安装了数据库和RabbitMQ,感觉还挺不错的。用一条语句就能创建好容器,里面包含了我们想要的程序,省去了很多安装的时间和步骤。这节课我们要在Docker环境中部署后端Java项目。
一、部署后端项目
1. 下载JDK镜像
我们本地电脑用的是15.0.2版本的JDK,所以在Docker中部署后端项目也要用这个版本的JDK,那么咱们就先把JDK镜像给下载一下。
docker pull openjdk:15.0.2-oraclelinux7
# 为镜像创建一个新的引用名称
docker tag openjdk:15.0.2-oraclelinux7 jdk15
# 删除原有引用名
docker rmi openjdk:15.0.2-oraclelinux7
2. 部署工作流项目
在云主机的root目录中,创建workflow文件夹,然后把emos-workflow.jar
和application.yml
文件上传到该目录中。
application.yml
文件中的MySQL和Redis连接必须要写成localhost,不要写IP地址。因为将来我们要关闭外网访问数据库端口,所以我们用localhost访问云主机本地的数据库是不受影响的。
接下来执行命令创建Docker容器,运行工作流项目。因为启动日志输出到out.log文件中,所以我们等待2分钟,然后打开这个日志文件,看看有没有报错信息。如果一切正常,说明该项目已经成功的启动了。
docker run -it -d --name=workflow --net=host -m 1g \
-e TZ=Asia/Shanghai \
-v /root/workflow:/root/workflow jdk15
#进入Java容器
docker exec -it workflow bash
#访问容器中的workflow文件夹
cd /root/workflow
#运行工作流项目
nohup java -jar -Dfile.encoding=utf-8 emos-workflow.jar --spring.config.location=application.yml >> out.log 2>&1 &
3. 部署emos-api项目
在云主机的root目录中,创建emos-api
目录,然后把打包好的emos-api.jar
和application.yml
文件上传到该目录。依然要把application.yml
文件中的数据库连接部分换成localhost才可以。
我们要在云主机的/root/emos-api
文件夹中放入apiclient_cert.p12
这个微信支付文件,然后接收审批结果的recieveNotify
和工作流的url
都要改成localhost
才可以。
接下来执行命令创建Docker容器,运行后端项目。
docker run -it -d --name=emos_api --net=host -m 2g \
-e TZ=Asia/Shanghai \
-v /root/emos-api:/root/emos-api jdk15
#进入Java容器
docker exec -it emos_api bash
#访问容器中的emos-api文件夹
cd /root/emos-api
#运行工作流项目
nohup java -jar -Dfile.encoding=utf-8 emos-api.jar --spring.config.location=application.yml >> out.log 2>&1 &
二、更换授权码
如果你要更换emos-api
项目中授权码,首先需要把emos_api
容器停下来。
docker stop emos_api
进入云主机的/root/emos-api
路径,把里面application.yml
文件中的code
和icode
修改成最新的。然后重新启动emos_api
容器,并且运行其中的Java项目。
docker start emos_api
#进入Java容器
docker exec -it emos_api bash
#访问容器中的emos-api文件夹
cd /root/emos-api
#运行工作流项目
nohup java -jar -Dfile.encoding=utf-8 emos-api.jar --spring.config.location=application.yml >> out.log 2>&1 &