本文只介紹基于mysql5.7的standalone單機(jī)版本安裝刺下,更多類型安裝碳抄,請(qǐng)參考:https://github.com/nacos-group/nacos-docker/blob/master/README_ZH.md
下載 nacos 1.2.0 葵姥,并準(zhǔn)備好nacos需要的數(shù)據(jù)庫(kù)
- 下載1.2.0版本的zip包(這個(gè)包里有運(yùn)行腳本灸眼,可以直接運(yùn)行nacos,但這是傳統(tǒng)方式運(yùn)行榴捡,我們這里主要講使用docker運(yùn)行,所以此包僅僅是為了一個(gè)數(shù)據(jù)庫(kù)腳本文件nacos-mysql.sql)
- 在已經(jīng)安裝好的mysql庫(kù)中創(chuàng)建nacos數(shù)據(jù)庫(kù)洋丐,并使用nacos提供的初始化腳本conf/nacos-mysql.sql初始化nacos;
- 創(chuàng)建一個(gè)nacos用戶挥等,并授予所有權(quán)限
CREATE USER 'nacos'@'%' IDENTIFIED BY 'Nacos501472';
grant all on nacos.* to 'nacos'@'%' with grant option;
flush privileges;
創(chuàng)建虛擬網(wǎng)絡(luò)友绝,關(guān)聯(lián)已經(jīng)安裝好的mysql容器
現(xiàn)實(shí)中往往是多個(gè)應(yīng)用容器使用同一個(gè)mysql,我們這里也不例外,docker-compose編排的容器內(nèi)部要想訪問編排之外的容器肝劲,一定要保證網(wǎng)絡(luò)是通的迁客,所以我們要?jiǎng)?chuàng)建一個(gè)網(wǎng)絡(luò),把mysql和nacos統(tǒng)一到一個(gè)網(wǎng)絡(luò)中辞槐。
#創(chuàng)建一個(gè)名為 net-docker的網(wǎng)絡(luò)掷漱,在docker-compose中使用external_links關(guān)鍵字關(guān)聯(lián)
docker network create net-docker --driver bridge
下載docker-compose編排文件及配置
- Clone 項(xiàng)目 并且進(jìn)入項(xiàng)目根目錄
git clone https://github.com/paderlol/nacos-docker.git cd nacos-docker
- 修改編排文件(nacos-docker/example/standalone-mysql-5.7.yaml),下面配置重點(diǎn)關(guān)注external_links和networks榄檬。此編排中還起了兩個(gè)容器卜范,分別是prometheus和grafana,以后再詳細(xì)介紹
$ vi standalone-mysql-5.7.yaml
version: "3.1" #這個(gè)版本和宿主機(jī)docker-compose版本相關(guān)
services:
nacos: #服務(wù)名
image: nacos/nacos-server:latest #使用nacos鏡像
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" #暴露端口[宿主機(jī)端口:docker容器端口]
external_links: #關(guān)聯(lián)容器外的 MySQL鹿榜,因?yàn)椴皇敲總€(gè)docker編排都起一個(gè)mysql的(這個(gè)要生效海雪,一定要?jiǎng)?chuàng)建虛擬網(wǎng)絡(luò)此處為net-docker)
- mysql:5.7
restart: on-failure
prometheus: #
container_name: prometheus
image: prom/prometheus:latest
volumes:
- ./prometheus/prometheus-standalone.yaml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
depends_on:
- nacos
restart: on-failure
grafana: #圖形化組件
container_name: grafana
image: grafana/grafana:latest
ports:
- 3000:3000
restart: on-failure
networks: #配置和mysql容器互通的網(wǎng)絡(luò)net-docker
default:
external:
name: net-docker
- 修改standalone-mysql-5.7.yaml中涉及到的mysql配置文件/env/nacos-standlone-mysql.env
PREFER_HOST_MODE=hostname
#單機(jī)模式
MODE=standalone
SPRING_DATASOURCE_PLATFORM=mysql
#mysql主機(jī)名稱(可以直接ping通mysql容器的ip)
MYSQL_SERVICE_HOST=mysql
# nacos使用的數(shù)據(jù)庫(kù)名稱
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=nacos
MYSQL_SERVICE_PASSWORD=Nacos
# 是否使用授權(quán)(為true時(shí),需要登錄才能操作里面的功能)
NACOS_AUTH_ENABLE=true
NACOS_AUTH_TOKEN_EXPIRE_SECONDS=36000
- 修改standalone-mysql-5.7.yaml中涉及到的環(huán)境變量文件(init.d/custom.properties)
spring.security.enabled=true
management.security=true
security.basic.enabled=true
# 忽略的資源配置
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/**
management.metrics.export.elastic.host=http://localhost:9200
# metrics for prometheus
anagement.endpoints.web.exposure.include=*
# metrics for elastic search
management.metrics.export.elastic.enabled=true
management.metrics.export.elastic.host=http://localhost:9200
# metrics for influx
#management.metrics.export.influx.enabled=false
#management.metrics.export.influx.db=springboot
#management.metrics.export.influx.uri=http://localhost:8086
#management.metrics.export.influx.auto-create-db=true
#management.metrics.export.influx.consistency=one
#management.metrics.export.influx.compressed=true
- 進(jìn)入example目錄舱殿,然后啟動(dòng)docker編排
#啟動(dòng)
docker-compose -f standalone-mysql-5.7.yaml up -d
#如果配置有調(diào)整需要停止nacos的奥裸,使用此命令
docker-compose -f standalone-mysql-5.7.yaml down
- 瀏覽打開 http://xxxx:8848/nacos,即可看到安裝好的nacos
image.png
image.png
常見問題定位
- 查看當(dāng)前有效路由
- 查看指定服務(wù)的實(shí)例
http://10.0.10.225:8001/nacos/v1/ns/instance/list?serviceName=the-api