Docker 部署 3.0.1 版本的nacos,并使用mysql作为数据库

本文讲一下如何在docker中部署3.0.1版本的nacos,并使用mysql作为数据库。mysql是运行在主机中的,而nacos是运行在docker中的。所有操作均基于Mac OS。

下载nacos

首先是拉取nocos的Docker镜像,运行

1
docker pull nacos/nacos-server:3.0.1

启动nacos

nacos 2.x 以上版本需要配置NACOS_AUTH_TOKEN,可以使用下面的命令生成NACOS_AUTH_TOKEN:
​​生成原始密钥​​(32+ 字符的随机字符串):

1
2
openssl rand -base64 32 | tr -d '/+=' | cut -c1-32
echo $TOKEN

示例输出:OQCiofvklDg15KV4dJxqzxkL9BITbMYB。

​​Base64 编码:

1
echo -n "OQCiofvklDg15KV4dJxqzxkL9BITbMYB" | base64 -w 0

输出示例:T1FDaW9mdmtsRGcxNUtWNGRIeHF6eGtMOUJJVGJNWUI=。

即可生成我们需要的NACOS_AUTH_TOKEN。

因为我们需要获取nacos的mysql脚本,所以我们需要先启动一个nacos的容器,然后从容器中获取脚本。

1
2
3
4
5
6
7
8
9
docker run --name nacos \
-e MODE=standalone \
-e NACOS_AUTH_TOKEN=T1FDaW9mdmtsRGcxNUtWNGRIeHF6eGtMOUJJVGJNWUI= \
-e NACOS_AUTH_IDENTITY_KEY=nacos \
-e NACOS_AUTH_IDENTITY_VALUE=nacos \
-p 8080:8080 \ # 新版本的nacos的控制台地址变成了 127.0.0.1:8080/index.html
-p 8848:8848 \
-p 9848:9848 \
-d nacos/nacos-server:latest

从nacos容器中获取mysql脚本

1
docker cp nacos:/home/nacos/conf/mysql-schema.sql .

创建nacos数据库

1
mysql -h 127.0.0.1 -P 3306 -u root -p

输入密码后,回车。

1
CREATE DATABASE IF NOT EXISTS `nacos_test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

导入mysql脚本

1
mysql -h 127.0.0.1 -P 3306 -u root -p nacos_test < mysql-schema.sql

然后将之前启动的nacos docker服务停止并删除

1
2
docker stop nacos
docker rm nacos

重新启动nacos 并添加mysql参数

修改docker启动命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
docker run -d \
--name nacos \
-p 8080:8080 \
-p 8848:8848 \
-p 9848:9848 \
-e MODE=standalone \
-e NACOS_AUTH_ENABLE=true \
-e NACOS_AUTH_TOKEN=T1FDaW9mdmtsRGcxNUtWNGRIeHF6eGtMOUJJVGJNWUI= \
-e NACOS_AUTH_IDENTITY_KEY=nacos \
-e NACOS_AUTH_IDENTITY_VALUE=nacos \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=host.docker.internal \ # host.docker.internal表示主机的ip地址, 不用修改
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_test \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=${MYSQL_PASSWORD} \
-e MYSQL_SERVICE_DB_PARAM="useSSL=false&allowPublicKeyRetrieval=true" \ # 连接mysql的参数,8.0以上不能通过密码直连,所以需要追加参数取消限制
nacos/nacos-server:latest

启动成功之后访问 127.0.0.1:8080/index.html 即可访问nacos

参考:


Docker 部署 3.0.1 版本的nacos,并使用mysql作为数据库
https://stanlee12.github.io/2025/06/20/docker-nacos/
作者
stan
发布于
2025年6月20日
许可协议