MENU

nacos持久化docker部署

July 17, 2020 • 技术

结束了为期三个月的加班,总算是有时间闲下来,写写博客。

简介

微服务需要部署nacos, 但是用docker进行部署,容器删除之后配置就全部丢失。所以需要配置外部数据库,使得nacos数据持久化。

文件目录

|—— docker-compose.yml
|—— nacos |—— init.d |—— custom.properties
|—— mysql |—— init.sql

准备docker-compose配置

version: '3'
services:

  nacos:
    image: nacos/nacos-server:1.2.1
    environment:
      - MODE=standalone
      - TZ=Asia/Shanghai
      - LANG=en_US.UTF-8
      - SPRING_DATASOURCE_PLATFORM=mysql
      - MYSQL_SERVICE_HOST=mysql
      - MYSQL_SERVICE_DB_NAME=nacos-config
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_USER=root
      - MYSQL_SERVICE_PASSWORD=pass
    volumes:
      - ./nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties
    networks:
      - default
    ports:
      - 8848:8848
      
   mysql:
    image: mysql:5.7.24
    command: --max_allowed_packet=32505856
    volumes:
      - ./mysql/my.cnf:/root/mysql/my.cnf mysql
      - ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql
    environment:
      - MYSQL_ROOT_PASSWORD=123456
    ports:
      - 3306
    networks:
      - default
     
    networks:
      default

init.sql 数据库初始脚本

https://raw.githubusercontent.com/alibaba/nacos/master/distribution/conf/nacos-mysql.sql

custom.properties

management.endpoints.web.exposure.include=*

my.cnf

[mysql]default-character-set=utf8
[mysqld]character-set-server=utf8

运行容器

执行compose up -d 即可

注意

需要注意,之前调试多次无法连接内网容器的mysql数据库,后来改了mysql版本之后终于连接成功。一般情况下,不建议使用mysql的docker容器。建议把mysql移到外部,有利于数据的持久化。