首先按照网上大多数的单机启动教程我配置的docker-compose.yml如下,需要的可以酌情修改
version: '3'
services:
nacos:
image: nacos/nacos-server:latest # 镜像`nacos/nacos-server:latest`
# mem_limit: 400m # 最大使用内存
container_name: nacos_docker # 容器名为'nacos_docker'
restart: always # 指定容器退出后的重启策略为始终重启
volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录
- ./nacos/standalone-logs/:/home/nacos/logs
- ./nacos/plugins/:/home/nacos/plugins
- ./nacos/conf/application.properties:/home/nacos/conf/application.properties
environment: # 设置环境变量,相当于docker run命令中的-e
- PREFER_HOST_MODE=hostname # 如果支持主机名可以使用hostname,否则使用ip,默认也是ip
- MODE=standalone # 单机模式启动
# - SPRING_DATASOURCE_PLATFORM=mysql # 数据源平台 仅支持mysql或不保存empty
# - MYSQL_SERVICE_HOST=*ip* # 注:这里不能为`127.0.0.1`或`localhost`方式!!!
# - MYSQL_SERVICE_DB_NAME=nacos_config # 所需sql脚本位于`https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql`
# - MYSQL_SERVICE_PORT=3306
# - MYSQL_SERVICE_USER=*user*
# - MYSQL_SERVICE_PASSWORD=*password*
# JVM调优参数
- JVM_XMS=128m #-Xms default :2g
- JVM_XMX=128m #-Xmx default :2g
- JVM_XMN=32m #-Xmn default :1g
- JVM_MS=16m #-XX:MetaspaceSize default :128m
- JVM_MMS=16m #-XX:MaxMetaspaceSize default :320m
- NACOS_DEBUG=n #是否开启远程debug,y/n,默认n
- TOMCAT_ACCESSLOG_ENABLED=false #是否开始tomcat访问日志的记录,默认false
ports: # 映射端口
- 8848:8848
application.properties文件
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
### 解开当前配置,指定类型为MySQL
spring.datasource.platform=mysql
### Count of DB:
### 你的数据库有几个实例这里就指定几
db.num=1
### Connect URL of DB:
### 解开这个配置,可以配置多个数据源信息
db.url.0=jdbc:mysql://*.*.*.*.*:3306/nacos_config?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
db.user.0=root
db.password.0=*******
回到xshell cd到 docker-compose.yml目录执行
docker-compose --compatibility up -d
等待了一会儿查看启动日志拉到最后
docker logs nacos_docker
不废话直接复制百度一下,知道了导致问题的原因是nacos内置的驱动版本太低,试过了很多文章种的方法都不行,什么把mysql-connector-java-xxx.jar放在哪个目录等等,最后自己摸索了一下在不改原有nacosjar包的基础下直接拉最新版本nacos/nacos-server:latest,该配置才是最轻松的嘛,修改pom.xml太麻烦了
Nacos Docker官方文档是有支持MySQL8的
去github找到example/standalone-mysql-8.yaml这个文件
version: "2"
services:
nacos:
image: nacos/nacos-server:${NACOS_VERSION}
container_name: nacos-standalone-mysql
env_file:
- ../env/nacos-standlone-mysql.env
volumes:
- ./standalone-logs/:/home/nacos/logs
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
ports:
- "8848:8848"
- "9848:9848"
- "9555:9555"
depends_on:
- mysql
restart: always
mysql:
container_name: mysql
image: nacos/nacos-mysql:8.0.16
env_file:
- ../env/mysql.env
volumes:
- ./mysql:/var/lib/mysql
ports:
- "3306:3306"
发现其实和我上面贴出的配置文件差不多
多了一个env_file:- …/env/nacos-standlone-mysql.env如下
PREFER_HOST_MODE=hostname
MODE=standalone
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_HOST=mysql
MYSQL_SERVICE_DB_NAME=nacos_devtest
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=nacos
MYSQL_SERVICE_PASSWORD=nacos
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
仔细查看不就是我的docker-compose.yml文件里面的environment环境变量嘛,对比之后发现我没有下面一列
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
直接把上面代码放在environment里面是不行的,我都注释了那么大一块儿了仔细看看之后发现上面的只有一个参数是我没配置过的useSSL=false
在db.url.0最后加了一个useSSL=false
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
### 解开当前配置,指定类型为MySQL
spring.datasource.platform=mysql
### Count of DB:
### 你的数据库有几个实例这里就指定几
db.num=1
### Connect URL of DB:
### 解开这个配置,可以配置多个数据源信息
db.url.0=jdbc:mysql://*.*.*.*:3306/nacos_config?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&useSSL=false
db.user.0=root
db.password.0=********
重启自己的容器等待一下查看日志
docker restart nacos_docker
docker logs nacos_docker
直接看最后一行,如果是completed就皆大欢喜了
访问ip:8848/nacos默认账号/密码nacos/nacos成功
新建一个.env文件,内容直接copygithub里面的
和配置里volumes:同级添加参数
env_file:
#你自己的.env文件路径,这里我是和application.properties同级存放
- ./nacos/conf/nacos-standlone-mysql.env
docker-compose --compatibility up -d
docker stop nacos_docker
docker restart nacos_docker
#########################################NACOS#######################################
nacos:
image: nacos/nacos-server:latest # 镜像`nacos/nacos-server:latest`
# mem_limit: 400m # 最大使用内存
container_name: nacos_docker # 容器名为'nacos_docker'
restart: always # 指定容器退出后的重启策略为始终重启
volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录
- ./nacos/standalone-logs/:/home/nacos/logs
- ./nacos/plugins/:/home/nacos/plugins
# - ./nacos/conf/application.properties:/home/nacos/conf/application.properties
# env_file:
# - ./nacos/conf/nacos-standlone-mysql.env #你自己的.env文件路径,和application.properties同级存放
environment: # 设置环境变量,相当于docker run命令中的-e
# - PREFER_HOST_MODE=ip # 如果支持主机名可以使用hostname,否则使用ip,默认也是ip
- MODE=standalone # 单机模式启动
- SPRING_DATASOURCE_PLATFORM=mysql # 数据源平台 仅支持mysql或不保存empty
- MYSQL_SERVICE_HOST= *.*.*.* # 注:这里不能为`127.0.0.1`或`localhost`方式!!!
- MYSQL_SERVICE_DB_NAME=nacos_config # 所需sql脚本位于 `nacos-mysql/nacos-mysql.sql`
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=********
# JVM大小参数
- JVM_XMS=128m #-Xms default :2g
- JVM_XMX=128m #-Xmx default :2g
- JVM_XMN=32m #-Xmn default :1g
- JVM_MS=16m #-XX:MetaspaceSize default :128m
- JVM_MMS=16m #-XX:MaxMetaspaceSize default :320m
- NACOS_DEBUG=n #是否开启远程debug,y/n,默认n
- TOMCAT_ACCESSLOG_ENABLED=false #是否开始tomcat访问日志的记录,默认false
# depends_on:
# - mysql-db
ports: # 映射端口
- 8848:8848