本文目的
- 在服务器中部署nacos集群,并连接外置数据库
- 关于外置的mysql部署和单例nacos如何部署请看下面的两个链接
如何使用docker部署mysql
docker部署容器化mysql5.7-CSDN博客
如何使用docker部署nacos
容器化部署Nacos:从环境准备到启动-CSDN博客
准备
- 下载docker版本的nacos
git clone https://github.com/nacos-group/nacos-docker.git
- 在example文件夹下找到cluster-hostname.yaml
对其中内容进行修改:(下面有对修改的解释)
version: "3.8"
services:
nacos1:
hostname: nacos1
container_name: nacos1
image: nacos/nacos-server:v2.2.1
volumes:
- ./cluster-logs/nacos1:/home/nacos/logs
ports:
- "7848:7848"
- "8848:8848"
- "9868:9848"
- "9850:9849"
env_file:
- ../env/nacos-hostname.env
restart: always
networks:
- rdt-network
nacos2:
hostname: nacos2
image: nacos/nacos-server:v2.2.1
container_name: nacos2
volumes:
- ./cluster-logs/nacos2:/home/nacos/logs
ports:
- "7850:7848"
- "8850:8848"
- "9870:9848"
- "9852:9849"
env_file:
- ../env/nacos-hostname.env
restart: always
networks:
- rdt-network
nacos3:
hostname: nacos3
image: nacos/nacos-server:v2.2.1
container_name: nacos3
volumes:
- ./cluster-logs/nacos3:/home/nacos/logs
ports:
- "7852:7848"
- "8852:8848"
- "9872:9848"
- "9854:9849"
env_file:
- ../env/nacos-hostname.env
restart: always
networks:
- rdt-network
networks:
rdt-network:
external: true
对修改的解释:
- 删除部署mysql的内容,因为我们使用的是外置的mysql
- 添加了networks的选项,这个docker网络是我自己创建的,目的是让三个nacos和mysql都在同一个docker网络内
# 列出所有docker网络
docker network ls
# 检查网络详情
docker network inspect <network-name>
# 检查容器详情
docker inspect <container-name-or-id>
# 创建一个新的网络
docker network create rdt-network
# 连接现有容器到新网络
docker network connect rdt-network mysql57
- 修订为自己要的nacos版本
image: nacos/nacos-server:v2.2.1
修改环境文件
- nacos1、2、3都使用这个环境文件
env_file:
- ../env/nacos-hostname.env
- 将nacos-hostname.yml修改为如下内容
PREFER_HOST_MODE=hostname
# 修改成这样它们就能互相发现了 因为三个容器的端口映射都映射到了8848
NACOS_SERVERS=nacos1 nacos2 nacos3
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_HOST=mysql57
# 我创建nacos试用的数据库时名字是nacos_config 可以根据你的需求更改
MYSQL_SERVICE_DB_NAME=nacos_config
# 你的mysql的端口、用户名、密码
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=root
MYSQL_SERVICE_PASSWORD=ur_password
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true
NACOS_AUTH_IDENTITY_KEY=2222
NACOS_AUTH_IDENTITY_VALUE=2xxx
NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
数据库
这个链接有如何创建nacos数据库的内容
容器化部署Nacos:从环境准备到启动-CSDN博客
启动nacos集群
# 后台启动
docker-compose -f example/cluster-hostname.yaml up -d
# 查看容器运行情况(在nacos-docker文件目录内)
docker-compose logs nacos1
docker-compose logs nacos1
docker-compose logs nacos3
到nacos控制台检查运行情况,运行正确的话如图