# Docker 安装 Alibaba Nacos

# 1. 准备工作

  • 下载 nacos 的 docker 镜像

    docker pull nacos/nacos-server:2.0.3
    
  • 准备 Nacos 配置文件: custom.properties

    配置文件的默认内容:

    #spring.security.enabled=false
    #management.security=false
    #security.basic.enabled=false
    #nacos.security.ignore.urls=/**
    #management.metrics.export.elastic.host=http://localhost:9200
    # metrics for prometheus
    management.endpoints.web.exposure.include=*
    
    # metrics for elastic search
    #management.metrics.export.elastic.enabled=false
    #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
    

# 2. docker-compose 启动

version: '3'
services:
    nacos:
        image: nacos/nacos-server:2.0.3
        container_name: nacos-server
        network_mode: "host"
        mem_limit: 2048m
        environment:
            - PREFER_HOST_MODE=hostname # 如果支持主机名可以使用 'hostname',否则使用 'ip' ,默认 'ip' 。
            - MODE=standalone
            - JVM_XMX=1024m # jvm 最大内存
            - JVM_XMS=1024m # jvm 启动(初始化)时占用内存
        volumes:
            - /etc/localtime:/etc/localtime:ro
            - ~/docker/8848/logs/:/home/nacos/logs
            - ./config/nacos/custom.properties:/home/nacos/init.d/custom.properties
#       ports:  # "host" 方式不用映射端口
#           - "8848:8848"
#           - "9848:9848"
#           - "9555:9555"

# 3. 整合 mysql 使用

Nacos Server 使用的是内嵌数据库 derby ,如果你想使用 “外部” 的数据库(例如,mysql),那么需要配置成如下:

version: "3"
services:
    nacos:
        image: nacos/nacos-server:2.0.3
        container_name: nacos-server
        network_mode: "host"
        mem_limit: 2048m
        environment:
            - PREFER_HOST_MODE=hostname
            - MODE=standalone
            - SPRING_DATASOURCE_PLATFORM=mysql
            - MYSQL_SERVICE_HOST=192.172.0.24     # mysql 所在 ip
            - MYSQL_SERVICE_PORT=3306             # mysql 所在端口
            - MYSQL_SERVICE_DB_NAME=nacos_config  # nacos 使用的数据库
            - MYSQL_SERVICE_USER=root             # 数据库用户名    
            - MYSQL_SERVICE_PASSWORD=123456       # 数据库密码
            - MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
            - JVM_XMX=1024m # jvm 最大内存
            - JVM_XMS=1024m # jvm 启动(初始化)时占用内存
        volumes:
            - /etc/localtime:/etc/localtime:ro
            - ~/docker/8848/logs/:/home/nacos/logs
            - ./config/nacos/custom.properties:/home/nacos/init.d/custom.properties
#       ports:  # "host" 方式不用映射端口
#           - "8848:8848"
#           - "9848:9848"
#           - "9555:9555"
        depends_on:
          - mysql

上述配置中,nacos 会连接 192.172.0.24:3306 的 nacos_config 数据库。

你可以在 Nacos 上添加一个配置项目信息,然后到 mysql 中查询 config_info 表来进行验证。