Docker Compose部署SpringCloud项目记录

项目部署任务:使用Docker Compose部署SpringCloud项目到阿里云服务器(CentOS7)

项目部分依赖版本:

部署整体思路:获取云服务器;基础服务组件配置(docker-compose.env.yml);项目服务配置(docker-compose.service.yml);项目打包;编写各服务的Dockerfile文件;利用IDEA 的远程部署功能上传项目文件到服务器(SSH)(方便,且可以设置自动上传);服务器端通过docker-compose启动服务。

实现细节:

项目部署完成后运行时发现如下报错:

mysql配置的url有问题,确认配置无误(本机正常运行)考虑是否是从nacos配置中心获取配置出错(未成功获取配置);将配置直接写入模块下的配置文件(application.yml)后发现报错变为nacos服务注册失败;更可以确定是未能成功连接上nacos。

检查nacos配置:

端口号确认无误,问题大概率出在localhost上;查看Docker网络配置,发现项目中使用的是自定义网络,为bridge桥接模式,查阅资料了解到该模式默认为每个容器分配单独的网络空间,彼此相互隔离。每个容器都单独的网卡、路由、IP等一些列基本的网络设施。容器启动后,都会被分配一个独立的虚拟IP。下图分别为服务网络配置及docker网络列表:

因此此时的localhost在容器中指向容器自身的回环接口,而不是宿主机的回环接口,当然也无法通过接口映射连接到正确的服务。

解决方法:1、将localhost改为宿主机的私有IP地址;2、将localhost改为服务所连接的自定义网络的桥接接口。地址可以通过hostname -I获取;3、服务网络配置改为host网络(使用host模式的容器可以直接使用宿主机的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好。)

以上三个IP地址分别为:宿主机私有IP地址、docker默认桥接网络IP地址(docker0)、自定义桥接网络IP地址

注意:Redis相关服务连接同理,在pom文件中引入Redis依赖后若无配置会自动将服务连接地址设置为localhost:6379;故需要在application.yml文件中添加配置spring.redis.host/port

参考文章:Docker网络详解_docker 网络-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值