目的:熟悉docker部署方式,记录一下方便后续查阅
环境:win10
测试架构配置(下表配置方式不适合生产环境,只是为了自己熟悉docker容器方式):
nacos注册发现服务 | 微服务提供者 | 微服务消费者 |
宿主机环境 | 宿主机环境 | 宿主机docker容器环境 |
前提步骤:
一、安装docker toolbox
二、创建nacos微服务工程
1. 服务提供方
server:
port: ${port:8001}
spring:
application:
name: service-01
cloud:
nacos:
discovery:
server-addr: 192.168.99.1:8848
namespace: e1c2fa58-6b69-4802-96cf-f446c37434aa
group: DMP
实现controller接口
@GetMapping("/getname")
private String getSchoolename(){
return "zhongyingxiaoxue";
}
2. 服务调用方
server:
port: 8091
spring:
application:
name: consumer-01
cloud:
nacos:
discovery:
server-addr: 192.168.99.1:8848
namespace: e1c2fa58-6b69-4802-96cf-f446c37434aa
group: DMP
feign:
client:
config:
default:
connectTimeout: 2000
readTimeout: 2000
三、创建docker镜像
1. docker toolbox根目录下创建Dockerfile文件:
FROM openjdk:8-jre
ADD consumerservice.jar consumerservice.jar
EXPOSE 8091
CMD java -Xms512m -Xmx512m -jar consumerservice.jar
2. 把服务调用方微服务的consumerservice.jar文件,放在docker toolbox根目录下
3. 构建docker镜像
docker build -t consumer:1.1 .
四、开始运行
1. 启动nacos服务
startup.sh -m standalone
2. 启动服务方微服务
宿主机直接java -jar providerservice.jar
3. 启动docker镜像服务消费微服务
docker run -p 8091:8091 -it 2da88871d5ef
步骤操作完毕,登录nacos管理页面查看微服务
五、问题及解决
微服务的nacos注册发现地址最初写的127.0.0.1:8848,发现docker服务微服务无法成功找到服务注册中心,原因:docker容器中程序访问127.0.0.1,实际上是docker容器内的地址,所以需要修改代码中服务注册地址为docker的网关地址192.168.99.1:8848