docker-compose 发布 spring cloud
部署流程
打开项目总pom.xml文件
找到<dockerHost>节点,把IP地址修改成要上传镜像的IP地址
如 <dockerHost>http://192.168.1.250:2375</dockerHost>
如果要指定上传的签名文件,修改签名文件路径(所有证书在doc/deploy/cert/目录下)
<dockerCertPath>d:\kintechcerts</dockerCertPath>
找到<baseImage>这里修改成服务器上的基础镜像的名称后面跟TAG号
如<baseImage>mycentoscn:7.5.1804</baseImage>
修改配置中心数据(修改mysql数据库和Redis链接)
修改springColud.config项目下/src/man/resurces/config/config-prod.yml文件
Datasource数据的地址
Redis的地址
kintechWebAPIURL内部访问的IP地址(也如果在同一台服务器直接用服务器内部IP也可以)
recipients 系统发邮件的邮箱地址
在本机配置环境变量(如果已配置,不要再重新配置)
新建系统变量名MAVEN (请根据实际maven的安装目录)
值C:\Program Files\JetBrains\IntelliJ IDEA 2017.1.3\plugins\maven\lib\maven3\bin
新建系统变量JAVA_HOME (请根据实际java的安装目录,只要到jdk目录不要到bin目录)
值C:\Program Files\Java\jdk1.8.0_60
再在系统变量Path变量后面添加%JAVA_HOME%;%MAVEN%
1停止服务(如非首次部署)
登录远程服务器,进入docker目录
cd docker
(新增)备份所有镜像为文件(运行shell文件,会删除老的镜像备份,再备份所有现在正在使用的镜像为tar文件),命令如下
./kpsimagesbak.sh
停止服务
docker-compose stop
确定服务是否停止
移除所有容器
docker rm -f $(docker ps -aq)
(查看所有容器docker ps -a)
移除所有镜象
docker rmi -f $(docker images -aq)
(删除一个镜像docker rmi -f IMAGE ID)
查看镜象是否移除
docker images
导入父镜象
docker load -i mycentoscn.tar
docker images
打开项目doc/deploy目录,在资源管理器打开
重命名deploy.batsh为deploy.bat 然后双击执行 按y开始
如果有报错(上传镜像时) Failed to execute goal com.spotify:docker-maven-plugin:0.4.13:build (default-cli) on project docker: Exception caught: An HTTPS URI for DOCKER_HOST must be provided to use Docker client certificates
---------报错解决开始------------
请参考这里:https://blog.csdn.net/u012930316/article/details/82997664
在服务器的/root/docker/下生成证书(所有要输入密码key的地方都全填123456)
openssl genrsa -aes256 -out ca-key.pem 4096 (输入123456)
openssl req -new -x509 -days 3650 -key ca-key.pem -sha256 -out ca.pem (输入123456,其他全回车为空)
openssl genrsa -out server-key.pem 4096
openssl req -sha256 -new -key server-key.pem -out server.csr (全回车为空)
openssl x509 -req -days 3650 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem (输入123456)
openssl genrsa -out key.pem 4096
openssl req -new -key key.pem -out client.csr (全为空,直接回车)
openssl x509 -req -days 3650 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem (输入123456)
rm -v client.csr server.csr (按y,y)
chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem
修改文件 /lib/systemd/system/docker.service
在-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \这一行后添加
--tlsverify --tlscacert=/root/docker/ca.pem --tlscert=/root/docker/server-cert.pem --tlskey=/root/docker/server-key.pem \
systemctl daemon-reload
systemctl restart docker(重启)
修改hppt为https <dockerHost>https://192.168.1.250:2375</dockerHost>
把/root/docker/目录下的征生成的所有证书文件拷贝到部署的本地机器上,
然后修改pom.xml文件,configuration中添加dockerCertPath节点,如下
<dockerHost>${dockerHost}</dockerHost> 这里要用https <dockerCertPath>e:\kintech\certs</dockerCertPath>
-------报错解决结束----------------
问题解决以后重新执行以上操作(运行deploy.bat)
(上传镜像如果10个镜像一起上传预计需要15分钟,视网络情况而定)
3 修改webui项目(单独上传helka平台)
修改kps.webUI/src/man/resources/application.ym 三个地方名称,端口,ID
修改webui项目下pom.xml
4 CMD进入webui根目录,执行maven命令(也可单独发布一个站点的时候使用这个命令)
mvn clean package docker:build
docker images
运行所有镜像:进入docker目录运行docker-compose up -d(docker附加工具,用于编排服务顺序) (启动所有镜像可能要一段时间,3-5分钟左右,可以打开9088网页查看)
(只运行一个镜像:docker-compose up -d registry(镜像名称))
如果运行报错:ERROR: for registry Cannot start service registry: driver failed programming external connectivity on endpoint registry (5975285ae1dde916bfbbb3a3ed4b4327255004817de01cc29319719787316ef4): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9088 -j DNAT --to-destination 172.18.0.2:9088 ! -i br-0caf7a6ba8bc: iptables: No chain/target/match by that name.
请参考:https://blog.csdn.net/tengdazhang770960436/article/details/77963182
=====解决办法 命令开始=====
pkill docker
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
docker -d
service docker restart
再重新运行
docker-compose up -d
=====解决办法 命令结束=====
docker-compose ps
8 查看单个服务正在启动情况docker-compose logs -f --tail 500 kps
使用命令: docker-compose logs -f --tail 500 registry
查看注册中心是否启动,显示如下说明注册中心启动成功
还原deploy.bat修改
还原webui修改
12 启动缓慢请重启机器(主机)
重启虚拟机( shutdown -r now )