以前nacos是用的脚本工具部署的,感觉不太好管理,今天把它改成docker-compose的方式,这样管理起来就方便啦。
准备
- Ubuntu 18.04.3 LTS
- nacos 2.0.2
- docker-compose version 1.29.2
开始操作
以下为操作步骤,读者可直接移步https://github.com/nacos-group/nacos-docker查阅官方详细介绍。
- 编写
docker-compose.yaml
,要记得将项目中对应挂载的目录粘贴到指定位置。
version: "2"
services:
nacos:
image: nacos/nacos-server:${NACOS_VERSION}
container_name: nacos-standalone
environment:
- PREFER_HOST_MODE=${PREFER_HOST_MODE}
- MODE=${MODE}
- SPRING_DATASOURCE_PLATFORM=${SPRING_DATASOURCE_PLATFORM}
- MYSQL_SERVICE_HOST=${MYSQL_SERVICE_HOST}
- MYSQL_SERVICE_DB_NAME=${MYSQL_SERVICE_DB_NAME}
- MYSQL_SERVICE_USER=${MYSQL_SERVICE_USER}
- MYSQL_SERVICE_PASSWORD=${MYSQL_SERVICE_PASSWORD}
- MYSQL_SERVICE_DB_PARAM=${MYSQL_SERVICE_DB_PARAM}
volumes:
- ./standalone-logs/:/home/nacos/logs
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
ports:
- "8848:8848"
- "9848:9848"
restart: on-failure
- 配置参数
.env
NACOS_VERSION=2.0.2
MYSQL_SERVICE_HOST=127.0.0.1
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_DB_NAME=nacos_db
MYSQL_SERVICE_USER=nacos
MYSQL_SERVICE_PASSWORD=nacos123
# 使用mysql8.0需要配置allowPublicKeyRetrieval=true
MYSQL_SERVICE_DB_PARAM=allowPublicKeyRetrieval=true&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8
- 启动
docker-compose up -d
问题排查过程
排查过程我以自己遇到的来进行举例。
- 查看容器日志
docker-compose logs -f --tail 111 nacos
- 从容器日志里面可以看到是数据库配置的问题,但是没有详细日志,我们还是无法定位到问题,但是我们可以注意到项目启动的时候会有如下提示:
让我们可以去如下位置查看项目日志,由docker-compose
配置找到对应的挂载位置进行查看,里面有很多日志文件都不认识,但是有一个肯定是首要排查的对象nacos.log
:
less nacos.log
嘿嘿,被抓到了,可以看到Public Key Retrieval is not allowed
这个就是罪魁祸首,我们先去度娘找一下答案:
看来大家也都遇到过这个问题,让我们配置上试试看:
启动成功。可喜可贺!
以上提供一种思路,因为nacos有些日志不会在docker logs中打印,我们需要去查看详细日志。