docker需要自行提前安装,这里只讲解如何在docker运行nacos。
docker的安装,需要在linux系统安装,如果你是window系统或者mac系统,都要跑虚拟机运行linux系统来安装docker。不过,虚拟机不稳定,很容易导致宿主机出现各种问题,所以本人搞了一台mini主机运行docker,还蛮方便的。
因为平时开发需要用到nacos,所以在docker上运行一个nacos,方便本地项目开发运行和调试。下面开始讲解如何通过6个操作步骤在docker运行nacos容器。
6个操作步骤如下:
1、拉取nacos镜像
docker pull nacos/nacos-server
若要拉取特定版本,请带上版本号,如:
docker pull nacos/nacos-server:v2.2.0
2、创建nacos挂载目录
mkdir -p /usr/local/nacos/conf
mkdir -p /usr/local/nacos/logs
3、运行nacos临时容器
docker run -d --name nacos nacos/nacos-server:v2.2.0
4、复制nacos临时容器中的相关文件
docker cp nacos:/home/nacos/logs /usr/local/nacos
docker cp nacos:/home/nacos/conf /usr/local/nacos
5、关闭并移除临时容器
docker rm -f nacos
6、正式运行nacos容器,挂载宿主机目录
docker run -d \
--name nacos \
--add-host host.docker.internal:host-gateway \
-p 8848:8848 \
--privileged=true \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-v /usr/local/nacos/conf:/home/nacos/conf \
-v /usr/local/nacos/logs:/home/nacos/logs \
--restart=always \
nacos/nacos-server:v2.2.0
至此容器已启动完成,访问nacos后台管理页面链接:http://docker主机IP:8848/nacos/index.html
,测试是否可以正常访问,账号密码是:nacos/nacos。
如果你安装的linux系统有防火墙,记得放开8848端口访问
PS:
nacos容器默认使用内置的cmdb数据库,若使用外部mysql数据库,需要更改nacos配置。这里有两种方式,一种是在运行nacos容器时,设置nacos配置变量,另一种是直接修改nacos配置文件,即修改宿主机挂载目录/usr/local/nacos/conf/
下的application.properties
文件。
在修改nacos配置文件之前,先在mysql数据库创建nacos数据库。在宿主机
/usr/local/nacos/conf/
目录中有nacos数据表定义脚本,即mysql-schema.sql
,创建数据库后执行该脚本即可。这里我创建了一个名为nacos_config
的数据库。
配置变量方式
docker run -d \
--name nacos \
--add-host host.docker.internal:host-gateway \
-p 8848:8848 \
--privileged=true \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e MYSQL_SERVICE_HOST=host.docker.internal \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-v /usr/local/nacos/conf:/home/nacos/conf \
-v /usr/local/nacos/logs:/home/nacos/logs \
--restart=always \
nacos/nacos-server:v2.2.0
以MYSQL_
开头的以及SPRING_DATASOURCE_PLATFORM
就是nacos配置变量。
MYSQL_SERVICE_HOST配置了
host.docker.internal
,表示连接宿主机的mysql数据库。在启动命令加上--add-host host.docker.internal:host-gateway
,才能使用host.docker.internal
。
SPRING_DATASOURCE_PLATFORM
的值要配置成mysql
才会使用mysql配置。
修改nacos配置文件方式
nacos配置文件修改前
#spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:}
spring.sql.init.platform=${SPRING_DATASOURCE_PLATFORM:}
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=${MYSQL_DATABASE_NUM:1}
db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}
db.user.0=${MYSQL_SERVICE_USER}
db.password.0=${MYSQL_SERVICE_PASSWORD}
nacos配置文件修改后
修改的4处配置及注释如下
#spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:}
spring.sql.init.platform=mysql #改成mysql才会使用db配置
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=${MYSQL_DATABASE_NUM:1}
db.url.0=jdbc:mysql://host.docker.internal:3306/nacos_config?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false} #host.docker.internal是宿主机host,需要在运行nacos容器命令加上--add-host host.docker.internal:host-gateway
db.user.0=root #改成宿主机MySQL数据库用户名
db.password.0=123456 #改成宿主机MySQL数据库密码
这里数据库host同样配置了
host.docker.internal
,表示连接宿主机的mysql数据库。在启动命令加上--add-host host.docker.internal:host-gateway
,才能使用host.docker.internal
。
SPRING_DATASOURCE_PLATFORM
的值要配置成mysql
才会使用mysql配置。
重启nacos容器
docker restart nacos
访问nacos后台管理页面,测试添加用户,如果mysql数据库用户表有新增用户数据,说明nacos已使用mysql数据库。