Nacos官網提供了nacos-docker項目,用於docker環境構建單機、集羣模式。目錄結構如下:
下面的配置參照根目錄下 example/cluster-hostname.yaml example/standalone-mysql-8.yaml 配置文件配置。
下載nacos-docker項目的zip壓縮包:https://github.com/nacos-group/nacos-docker
解壓:unzip nacos-docker.zip
cd nacos-docker
cp example/cluster-hostname.yaml my-cluster-hostname.yaml
編輯compose文件,my-cluster-hostname.yaml, 修改禁用內部mysql服務
version: "3"
services:
nacos1:
hostname: nacos1
container_name: nacos1
image: nacos/nacos-server:latest
volumes:
# nacos使用mysql8 需要使用插件目錄,該目錄存放mysql-connect-java8的驅動,將解壓包內example/plugins複製到上級目錄
- ./plugins/mysql/:/home/nacos/plugins/mysql/
- ./cluster-logs/nacos1:/home/nacos/logs
# 此處的配置文件來自於example/init.d, 需要移到與example同級
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties # example/init.d/custom.properties複製到上級目錄
ports:
- "8848:8848"
- "9555:9555"
#environment:
# JVM_XMS: 512m
env_file:
- ./env/nacos-hostname.env
restart: always
# 去掉mysql服務器依賴
#depends_on:
# - mysql
nacos2:
hostname: nacos2
image: nacos/nacos-server:latest
container_name: nacos2
volumes:
- ./plugins/mysql/:/home/nacos/plugins/mysql/
- ./cluster-logs/nacos2:/home/nacos/logs
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
ports:
- "8849:8848"
env_file:
- ./env/nacos-hostname.env
restart: always
#depends_on:
# - mysql
nacos3:
hostname: nacos3
image: nacos/nacos-server:latest
container_name: nacos3
volumes:
- ./plugins/mysql/:/home/nacos/plugins/mysql/
- ./cluster-logs/nacos3:/home/nacos/logs
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
ports:
- "8850:8848"
env_file:
- ./env/nacos-hostname.env
restart: always
#depends_on:
# - mysql
# 去掉內部mysql
# mysql:
# container_name: mysql
# image: nacos/nacos-mysql:5.7
# env_file:
# - env/mysql.env
# volumes:
# - /var/mysql:/var/lib/mysql
# ports:
# - "3306:3306"
將example/plugins目錄移動到與example同級,plugins內存放是mysql8的driver。
修改環境變量文件env/nacos-hostname.env,修改mysql配置:
PREFER_HOST_MODE=hostname
NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
# 改爲外部mysql的ip地址,配置用戶名密碼nacos_config
MYSQL_SERVICE_HOST=192.168.1.123
MYSQL_SERVICE_DB_NAME=nacos_config
MYSQL_SERVICE_PORT=33066
MYSQL_SERVICE_USER=nacos
MYSQL_SERVICE_PASSWORD=nacos
# 自定義jvm參數,更多:https://nacos.io/zh-cn/docs/quick-start-docker.html
JVM_XMS=512m
JVM_XMX=512m
JVM_XMN=256m
JVM_MS=64m
JVM_MMS=128m
下載nacos-db初始化腳本,並創建mysql數據庫和nacos用戶:
wget https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql
create database nacos_config character set utf8
use nacos_config;
source nacos-mysql.sql;
create user 'nacos'@'%' identified by 'nacos';
grant all privileges on nacos_config.* to 'nacos'@'%' WITH GRANT OPTION;
flush privileges;
啓動:docker-compose -f my-cluster-hostname.yaml up (-d 後臺啓動),會在當前目錄(nacos-docker)生成cluster-logs日誌文件,每個nacos一個日誌文件夾。
使用mysql8,未使用mysql-connector-java-8.x.x.jar的驅動,啓動docker後,訪問8848端口出現:connection reset by peer.
nacos日誌目錄:
cluster-logs/nacos1/config-fatal.log出現:nacos [master-db] master db not found.
cluster-logs/nacos1/nacos.log出現:Nacos Server did not start because dumpservice bean construction failure : ...