在docker中使用nacos镜像

拉取nacos镜像

docker pull nacos/nacos-server

创建目录

日志目录

mkdir -p /home/nacos/logs

极简方式启动

docker run \
--name nacos -itd \
-e MODE=standalone \
-p 18847:8848 \
-v /home/nacos/logs:/home/nacos/logs  \
nacos/nacos-server
  1. -p:指定了宿主机端口为18847
  2. -v:指定宿主机与nacos的日志目录映射
  3. -e:指定环境变量(或–env)。MODE=standalone: 单机, MODE=cluster:集群(默认模式)

访问

http://localhost:18847/nacos

账号密码:nacos/nacos

数据库方式启动

宿主机创建数据库&用户授权

create database if not exists nacos_in_docker default charset utf8mb4 collate utf8mb4_general_ci;

grant all privileges on nacos_in_docker.* to nacos@'%';
flush privileges;

创建配置文件

文件名:

/home/nacos/init.d/custom.properties

文件内容

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

spring.datasource.platform=""

db.num=1
db.url.0=jdbc:mysql://xxx.xxx.xxx.xxx:3306/nacos_in_docker?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos
db.password=nacos

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

注意:数据库的地址不能是localhost,因为localhost应该指向了nacos容器。

数据库设置

设置为主机IP

如果是在云主机上部署nacos镜像,可使用云主机的内网地址。(经测试,华为云可行)

设置为docker的虚拟网卡地址

在宿主机使用“ifconfig”命令,一般会看到一个docker0的网卡,地址一般是172.17.0.1,使用这个地址。(经测试,华为云可行)

启动

docker run \
--name nacos_db -itd \
-p 18847:8848 \
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-v /home/nacos/logs:/home/nacos/logs \
-v /home/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \
nacos/nacos-server

日志查看

tail -n1000 -f /home/nacos/logs/nacos.log

常见问题处理

找不到数据源

日志中报错:No DataSource set

......
Caused by: java.lang.IllegalStateException: No DataSource set
	at org.springframework.util.Assert.state(Assert.java:73)
	at org.springframework.jdbc.support.JdbcAccessor.obtainDataSource(JdbcAccessor.java:77)
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:371)
	at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:452)
	at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:462)
	at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:473)
	at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:480)
.....

解决方案:将custom.properties中属性设置为空字符串

# 这里将属性值写为mysql就掉坑里了
spring.datasource.platform=""
  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值