Docker安装nacos(一台服务器多个实例)

619 阅读1分钟

「时光不负,创作不停,本文正在参加2022年中总结征文大赛

Docker安装nacos(一台服务器多个实例)

1. docker拉取nacos
# 不添加版本拉取为最新版本 nacos/nacos-server:1.4.2  (1.4.2版本)
docker pull nacos/nacos-server
2. 创建自定义网络
    1. 自定义网络信息
# 查看当前docker中已有网络
docker network ls
# 创建自定义网段
docker network create --driver bridge --subnet=172.19.0.0/16 --gateway=172.19.0.1 mynetwork
# 显示该自定义网络信息
docker network inspect mynetwork
    1. 使用默认docker网络在springboot整合nacos集群时会产生注册找不到的问题

3. docker启动nacos容器(nacos信息持久化到mysql中)
docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="172.19.0.2:8848 172.19.0.3:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=host \
-e MYSQL_SERVICE_PORT=port \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=user \
-e MYSQL_SERVICE_PASSWORD=password \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-p 8847:8848 \
--name nacos8847 \
--net mynetwork --ip 172.19.0.2 \
--restart=always \
nacos/nacos-server

docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="172.19.0.2:8848 172.19.0.3:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=host \
-e MYSQL_SERVICE_PORT=port \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=user \
-e MYSQL_SERVICE_PASSWORD=password \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-p 8848:8848 \
--name nacos8848 \
--net mynetwork --ip 172.19.0.3 \
--restart=always \
nacos/nacos-server
4. nginx代理访问
upstream nacoscluster{
	server  ip:8847;
	server  ip:8848;
}

server {
  location /nacos/ {
      proxy_pass http://nacoscluster/nacos/;
  }
}
5. nginx配置更改后重启
6. 访问http://ip:port/nacos/

image.png

7.springboot整合nacos
    1. 引入nacos依赖包
<!-- 引入nacos依赖包 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
    1. yml配置
spring:
  application:
    name: stock # 服务名称,nacos默认使用该名称注册
  cloud:
    nacos:
      server-addr: ip:port # ip地址和端口,集群时此处为nginx代理地址和端口
      discovery:
        username: nacos # nacos用户名
        password: nacos # nacos密码
        namespace: public # 默认命名空间
    1. 服务启动成功后nacos页面服务列表