Bootstrap

6个步骤在docker运行nacos

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数据库。

;