Hướng dẫn triển khai Nacos trên Docker với MySQL

1. Chuẩn bị cơ sở dữ liệu MySQL

1.1. Cài đặt MySQL 5.7 qua Docker

Sử dụng Docker để khởi tạo container MySQL phiên bản 5.7.

1.2. Tạo network cho Docker

docker create network nacos_network

1.3. Tải và thực thi script khởi tạo dữ liệu

Tải file SQL từ repository chính thức của Nacos:

# Tải script tạo bảng
https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql

Thực thi script này để tạo database nacos_config và các bảng cần thiết. Tài khoản mặc định sau khi khởi tạo: username nacos, password nacos.

2. Triển khai Nacos

2.1. Kéo image Nacos từ Docker Hub

docker pull nacos/nacos-server

2.2. Tạo thư mục mount trên host

mkdir -p /home/nacos/logs
mkdir -p /home/nacos/data
mkdir -p /home/nacos/conf

2.3. Khởi tạo container tạm thời để copy cấu hình

2.3.1. Chạy container Nacos tạm

docker run --name nacos -d \
  -p 8848:8848 \
  -e MODE=standalone \
  nacos/nacos-server

Chế độ standalone dành cho môi trường đơn node.

2.3.2. Sao chép file cấu hình từ container ra host

docker cp -a nacos:/home/nacos /home/nacos/
docker stop nacos && docker rm -f nacos

2.3.3. Chỉnh sửa file cấu hình kết nối database

Mở file /home/nacos/conf/application.properties và cập nhật các thông số sau:

server.contextPath=/nacos
server.servlet.contextPath=/nacos
server.port=8848

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://your-mysql-host:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true

db.user=your-username
db.password=your-password

nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false

management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false

server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i

nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/**

nacos.naming.distro.taskDispatchThreadCount=1
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000

nacos.naming.data.warmup=true
nacos.naming.expireInstance=true

Lưu ý quan trọng:

  • Thay your-mysql-host, your-username, your-password bằng thông tin thực tế.
  • Bắt buộc sử dụng utf8 thay vì utf8mb4 trong connection string.

2.4. Khởi động lại Nacos với cấu hình mới

docker run -d \
  --name nacos-sa-mysql \
  -e MODE=standalone \
  -e SPRING_DATASOURCE_PLATFORM=mysql \
  -e MYSQL_SERVICE_HOST=192.168.20.255 \
  -e MYSQL_SERVICE_USER=root \
  -e MYSQL_SERVICE_PASSWORD=admin \
  -e MYSQL_SERVICE_DB_NAME=nacos_config \
  -e JVM_XMS=256m \
  -e JVM_XMX=256m \
  -e JVM_XMN=256m \
  -p 8848:8848 \
  -v /home/nacos/:/home/nacos/ \
  --network nacos_network \
  --restart=always \
  nacos/nacos-server

2.5. Truy cập giao diện quản trị

Mở trình duyệt và điều hướng đến: http://your-server-ip:8848/nacos/

Sử dụng thông tin đăng nhập mặc định: username nacos, password nacos.

Thẻ: Nacos docker mysql containerization configuration-management

Đăng vào ngày 8 tháng 6 lúc 02:55