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 )
相关文章
- Spring Boot 3.0.1-SNAPSHOT 正式发布,这份升级指南必须收藏
- 18分布式电商项目 - Spring Security框架
- Docker swarm 通过 docker-compose 部署应用
- [转]深入理解Docker ulimit(docker容器启动报错library initialization failed - unable to allocate file descriptor table - out of memory问题解决)
- CSDN日报190815:spring boot 项目实战,热门技术干货分享!
- Spring Boot 项目打包 + Shell 脚本部署
- Spring基于注解的IOC初始化(七)
- Spring Boot 使用AOP
- Windows下启动Docker容器遇到Error invoking remote method ‘docker-start-container‘: Error解决办法
- 注意:Spring Boot 2.7开始spring.factories不推荐使用了,接下来这么玩...
- Spring Boot 2.6.0正式发布:默认禁止循环依赖、增强Docker镜像构建...
- 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
- Spring AOP 不同配置方式产生的冲突问题
- Spring Security 实战干货: 简单的认识 OAuth2.0 协议
- Spring Boot 2 实战:结合 Docker 容器化
- spring框架漏洞整理(Spring Framework漏洞)
- 初学SSM框架感觉一团糟,希望这篇文章能帮到你!(Spring)
- 浅析Docker Volume理解:docker内文件系统是如何工作的、镜像启动容器是如何工作的、为什么要使用Volume、如何使用Volume、匿名卷与实名卷的区别
- 浅析Docker数据管理-数据库容器化并持久化:数据卷概念、创建数据卷的2种方式、docker volume用法
- Ubuntu下Jenkins(docker)配置Docker远程启动
- 【spring mvc】Spring MVC 的参数解析器ArgumentResolver阐述
- spring boot打包文件后,报错No such file or directory
- spring beans源码解读之--XmlBeanFactory
- Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
- spring security中@PreAuthorize、@PostAuthorize、@PreFilter和@PostFilter四者的区别