Docker 启动 Nacos 2.1.2
Docker快速部署方案 ---- Nacos,Docker 启动 Nacos2.1.2。
1. 拉取镜像
docker pull nacos/nacos-server:v2.1.2
2. 新建挂载目录
mkdir -p /opt/docker/nacos/{data,conf,logs}
3. 创建nacos数据库
为将nacos持久化到mysql中,我们需要新建nacos数据库,我们可以从github上拿到库表语句,也可以在已经拉取的nacos镜像中获取,因为版本迭代的原因,我们这里选择从nacos镜像中获取。
- 非挂载形式启动nacos,可以在浏览器
ip:port/naocs
访问但没必要
docker run -d --name nacos \
-p 8848:8848 \
-e MODE=standalone \
nacos/nacos-server:v2.1.2
- 启动nacos容器后,将nacos配置文件目录**(默认在/home/nacos/conf/)整体,也可以是基本必要的文件(application.properties、mysql-schema.sql、nacos-logback.xml)**复制到宿主机中,删除容器
docker cp nacos:/home/nacos/conf/ /opt/naocs/conf ---> 从容器中复制出来整体配置
docker rm -f nacos ---> 删除nacos容器
- 拿到数据库表文件**(/opt/nacos/conf/mysql-schema.sql)**,在指定数据库nacos下执行(可以选择客户端或者命令行操作)
4. 启动容器
目标以挂载本机data、logs、conf形式启动nacos并可以成功访问
- 分别将配置文件和日志配置文件拷贝到挂载目录conf下
cp /opt/naocs/conf/application.properties /opt/docker/nacos/conf/application.properties
cp /opt/naocs/conf/nacos-logback.xml /opt/docker/nacos/conf/nacos-logback.xml
- 修改application.properties的配置(可选),采用添加默认值的方式,这样不会影响指定命令行的参数
# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=${NACOS_APPLICATION_PORT:8848}
# 修改此行,将SPRING_DATASOURCE_PLATFORM的默认值""改为mysql
spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:mysql}
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=${MYSQL_DATABASE_NUM:1}
# 修改此行,添加MYSQL_SERVICE_HOST的默认值为192.168.120.1,MYSQL_SERVICE_DB_NAME的默认值为nacos
db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST:192.168.120.1}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME:nacos}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}
# 修改此行,添加MYSQL_SERVICE_HOST的默认值为192.168.120.1,MYSQL_SERVICE_DB_NAME的默认值为nacos
db.url.1=jdbc:mysql://${MYSQL_SERVICE_HOST:192.168.120.1}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME:nacos}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}
# 修改此行,添加MYSQL_SERVICE_USER的默认值为root
db.user=${MYSQL_SERVICE_USER:root}
# 修改此行,添加MYSQL_SERVICE_PASSWORD的默认值为root
db.password=${MYSQL_SERVICE_PASSWORD:root}
### The auth system to use, currently only 'nacos' is supported:
nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
### The token expiration in seconds:
nacos.core.auth.default.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
### The default token:
nacos.core.auth.default.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey012345678901234567890123456789012345678901234567890123456789}
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:serverIdentity}
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:security}
server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D
# default current work dir
server.tomcat.basedir=
## spring security config
### turn off security
nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
- 启动容器,运行之前请确保之前启动的容器已被删除,访问
ip:8848/nacos
登录控制台
docker run -d --name nacos \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-v /opt/docker/nacos/logs:/home/nacos/logs \
-v /opt/docker/nacos/data:/home/nacos/data \
-v /opt/docker/nacos/conf:/home/nacos/conf \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
# 防坑,此处一定要填写数据库的真实IP,使用localhost或者1227.0.0.1或导致database no set错误,可以通过 ifconfig 查看
-e MYSQL_SERVICE_HOST=172.26.21.156 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
nacos/nacos-server:v2.1.2
参数说明
- MODE=standalone 单节点模式
- SPRING_DATASOURCE_PLATFORM=mysql 使用mysql数据库连接方式
- MYSQL_SERVICE_HOST=192.168.120.1 指定数据库地址
- MYSQL_SERVICE_PORT 数据库端口
- MYSQL_SERVICE_USER 数据库用户名
- MYSQL_SERVICE_PASSWORD 数据库密码
- MYSQL_SERVICE_DB_NAME 数据库名称
- -p 8848:8848 -p 9848:9848 -p 9849:9849 端口映射
- –name nacos 容器命名
- –restart=always 任意时候重启容器,开机就能自动启动容器(需设置docker为开机自启)