nacos 依賴 mysql 先安裝mysql ,這裡使用的是8+版本,原因在於原本的 5.7 版本中並沒有對 m1 的良好支持,如果啟動會有報錯說查詢不到對應版本信息(雖然可以通過自定義 mirror 實現) mysql 配置參考(docker-compose): mysql: image: my ...
nacos 依賴 mysql
先安裝mysql ,這裡使用的是8+版本,原因在於原本的 5.7 版本中並沒有對 m1 的良好支持,如果啟動會有報錯說查詢不到對應版本信息(雖然可以通過自定義 mirror 實現)
mysql 配置參考(docker-compose):
mysql:
image: mysql:8.0
container_name: mysql
restart: always
environment:
- MYSQL_ROOT_PASSWORD=root
ports:
- 3306:3306
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/my.cnf:/etc/mysql/my.cnf
- ./mysql/initdb:/docker-entrypoint-initdb.d
- ./mysql/mysql-files:/var/lib/mysql-files
安裝 nacos
M1 支持版本nacos有限,這裡要用zhusaidong/nacos-server-m1:2.0.3
# 註意需要加版本號,否則會拉取失敗
docker pull zhusaidong/nacos-server-m1:2.0.3
配置參考(docker-compose):
nacos:
image: zhusaidong/nacos-server-m1:2.0.3
container_name: nacos
restart: always
depends_on:
- mall4cloud-mysql
ports:
- 8848:8848
- 9848:9848
- 9849:9849
environment:
- JVM_XMS=256m
- JVM_XMX=256m
- MODE=standalone
- PREFER_HOST_MODE=hostname
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=XXXX
- MYSQL_SERVICE_DB_NAME=nacos
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=root
- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone==GMT%2B8
volumes:
- ./nacos/logs:/home/nacos/logs
問題
mac m1 中nacos 連接顯示No DataSource set
Nacos Server did not start because dumpservice bean construction failure : No DataSource set
mysql使用的是8+版本,所以記得添加serverTimezone=GMT%2B8
參考
characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
重點
我首先在nacos 的容器中使用 curl 命令查看
curl localhost:3306
結果是:
docker curl: (7) Failed to connect to localhost port 3306: Connection refused
順著找下去原因
在容器外面是可以curl到容器的地址,但是就是在容量內不能curl連接到容器地址
這裡直接使用電腦的 ip 代替 localhost 以及 127.0.0.1 來
附:mac 查找自己 ip 的cmd 命令
ifconfig
將 ip 填到MYSQL_SERVICE_HOST的配置項中
最終成功問題解決