一、下載鏡像
# 查找鏡像 docker search nacos # nacos/nacos-server # 下載鏡像 https://hub.docker.com/ docker 官方搜索查看有哪些 nacos 鏡像版本 docker pull nacos/nacos-server:v2.0.3 # 查看已下載鏡像 docker images
二、數據庫配置
數據庫文件下載
碼雲:distribution/conf/nacos-mysql.sql · Gitee 極速下載/Nacos - 碼雲 - 開源中國
相關配置
# 建庫 create database nacos; use nacos; -- 執行或者導入 nacos-db.sql,不知道為什么這個文件里的注釋還寫了 【數據庫全名 = nacos_config】 -- 可以直接復制粘貼到 navicat 或 sqlyog 上執行,200多行不是很長 # 創建 nacos 單獨使用的一個用戶,也可以直接把 root 用戶給他 create user 'nacos'@'%' IDENTIFIED BY 'nacos'; -- 庫nacos的所有表的執行存儲過程、CRUD權限 grant execute, insert, select, update on nacos.* to 'nacos'@'%'; -- 刷新權限 FLUSH PRIVILEGES; -- 查看權限 show grants for nacos;
三、創建相關目錄
# 創建 nacos 日志存放目錄 mkdir -p /home/docker/nacos/logs # 創建 nacos 配置文件目錄 mkdir -p /home/docker/nacos/init.d
配置文件
vim /home/docker/nacos/init.d/custom.properties
配置文件內容
其實下面的配置應該可以下載一個nacos安裝包, 然后它也自帶配置文件, 應該是可以參考他的。我這里寫的配置就是若使用安裝包進行安裝時需要修改的配置,也就是我理解的其他配置就是默認的,我們這里的配置可以覆蓋那些配置
數據庫的url自行處理,比如ip端口、庫名等
#*************** Config Module Related Configurations ***************# ### If use MySQL as datasource: spring.datasource.platform=mysql ### Count of DB: db.num=1 ### Connect URL of DB: db.url.0=jdbc:mysql://192.168.33.100:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=true&serverTimezone=Asia/Shanghai db.user.0=nacos db.password.0=nacos
四、創建容器並啟動
docker run \ --name nacos \ -d \ -p 8848:8848 \ -p 9848:9848 \ -p 9849:9848 \ --restart=always \ -e JVM_XMS=256m \ -e JVM_XMX=256m \ -e MODE=standalone \ -v /home/docker/nacos/logs:/home/nacos/logs \ -v /home/docker/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \ nacos/nacos-server:v2.0.3
查看啟動日志
docker logs nacos
訪問
ip:port/nacos
用戶名和密碼默認都是 nacos,就是上面我們執行的那個sql文件中最后插入的
注
如果出現連接數據庫的錯誤,也就是 DataSource 數據源的錯誤,可能是 custom.properties 中的 db.url 的超時時間較短的問題(我在公司的電腦不知道為什么連接數據庫就很慢)
五、docker-compose
docker-compose.yml
version: '3' services: nacos-2.0.3: # 鏡像名 image: nacos/nacos-server:v2.0.3 # 容器名(以后的控制都通過這個) container_name: nacos-2.0.3 # 重啟策略 restart: always env_file: - ./nacos-standlone-mysql.env # 映射端口 ports: - 8848:8848 - 9848:9848 - 9849:9848 volumes: # 日志掛載 - ./logs/:/home/nacos/logs/ # 配置掛載 # - ./init.d/custom.properties:/home/nacos/init.d/custom.properties # 系統時區信息和本地一致(任何Linux容器都是這樣嗎) - /etc/localtime:/etc/localtime:ro networks: - demo_net cap_add: # 這樣才能使用 JDK 的工具 jstack 等 - SYS_PTRACE networks: demo_net: external: true # 來自外部
nacos-standlone-mysql.env
# 直譯:首選主機模式 PREFER_HOST_MODE=hostname # 使用模式單機模式 MODE=standalone # 直譯過來是spring數據源平台(由於我們用的是mysql所以不用改) SPRING_DATASOURCE_PLATFORM=mysql # mysql鏈接參數 MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&allowPublicKeyRetrieval=true&queryTimeout=2400&serverTimezone=Asia/Shanghai # mysql鏈接地址(注:ip地址可以寫容器名) MYSQL_SERVICE_HOST=mysql8 # mysql數據庫名 MYSQL_SERVICE_DB_NAME=nacos # mysql端口 MYSQL_SERVICE_PORT=3306 # mysql用戶名 MYSQL_SERVICE_USER=root # mysql密碼 MYSQL_SERVICE_PASSWORD=root # jvm優化參數 JVM_XMS=256m JVM_XMX=256m JVM_XMN=128m