docker 部署汇总


前言:

  • docker 容器分配 IP 地址通过三种方式:

    • 桥接网络:桥接网络是 Docker 默认的网络模式。当你启动一个容器时,它会自动连接到一个名为 bridge 的默认网络。这个网络中的容器会被分配一个 IP 地址,但这些地址是动态分配的,你不能手动指定。
      • 如果采用这种默认的方式,就会导致每次容器重启,他所属的IP地址可能就会发生变化,容器之间如果存在通信,就会导致通信中断,包括集群也是。
    • 主机网络:主机网络模式允许容器共享主机的网络堆栈。这个模式通常用于需要高性能网络连接的场景,但它不会给容器分配独立的 IP 地址,而是使用主机的 IP 地址。
    • 自定义网络:最常用。自定义网络允许你更灵活地控制容器间的通信和 IP 地址分配。后续我采用的也是这种方式创建容器并分配 IP地址。
  • 既然需要手动创建网络并分配IP地址,那么在你的容器创建之前需要规划好分配给容器的IP,防止IP冲突。

  • 如下图,是我需要创建的网络和容器IP规划。

    在这里插入图片描述

  • 创建 docker 网络:

    docker network create --subnet=192.168.1.0/26 my_network
    
  • 我这里自定义的网络地址为 26 位,主机地址为6位,除去网络地址(主机位全是0)、广播地址(主机位都是1),以及docker 会默认占用第一个可用地址为网关(192.168.1.1),所以我这里还剩 192.168.1.2 ~ 192.168.1.62 范围可用,完全够用。如果是企业,主机位可以给8位。如有需要,也可进行子网划分,对网络进行更精确的划分规划。

  • 查看所有容器所属 IP:

    docker ps -q | xargs -I {} docker inspect -f '{{.Name}} - {{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' {} | sed 's/^\///'
    

一、部署 Kafka

  • 在安装kafka之前需要先安装zookeeper,因为kafka 启动会将元数据保存在 zookeeper 中,zookeeper是一种分布式协调服务,可以在分布式系统中共享配置,协调锁资源,提供命名服务

1. 部署 zookeeper

  • 拉取镜像

    docker pull wurstmeister/zookeeper
    
  • 创建容器并启动

    docker run \
    --net my_network \
    --ip 192.168.1.4 \
    -e ZOOKEEPER_TICK_TIME=10000 \
    --restart=always \
    --log-driver json-file \
    --log-opt max-size=100m \
    --log-opt max-file=2  \
    --name zookeeper -p 2181:2181 \
    -v /etc/localtime:/etc/localtime \
    -d wurstmeister/zookeeper
    
  • 如果启动过程中出现:library initialization failed - unable to allocate file descriptor table - out of memoryAborted (core dumped)

    • 更改:vim /usr/lib/systemd/system/docker.service
    • 追加: --default-ulimit nofile=65535:65535
      在这里插入图片描述
    • Linux 系统中,每个打开的文件、网络连接、设备等都需要一个文件描述符。应用程序需要足够的文件描述符来处理大量并发连接或文件操作。
    • nofile:代表文件描述符限制。
    • 65535:65535:两个值分别表示 软限制(soft limit)和 硬限制(hard limit):
      • 软限制:应用程序实际受到的限制,可通过 ulimit -n 临时修改。
      • 硬限制:软限制的上限,只能由 root 用户修改。

2. 部署 Kafka

  • 拉取 Kafka 镜像

    docker search wurstmeister/kafka
    
  • 创建挂载目录

    mkdir -p /home/kafka/{data,config}
    
  • 创建并启动 Kafka 容器

    • 注意内存不能设置过小,否则起不来。

    • KAFKA_ADVERTISED_LISTENERS=PLAINTEXT:配置指定了 Kafka broker 向客户端和其他 broker 公开的地址。它定义了客户端和其他 broker 应该使用什么地址来连接到这个 broker。注意:这里一定要配置所在系统的IP地址,而不是我们自己指定的ip地址,不然我们用代码无法连接上Kafka,会报:Kafka. Connection to node -1 could not be established。

    • KAFKA_LISTENERS=PLAINTEXT:指定了 Kafka broker 监听连接的地址和端口。它定义了 broker 实际绑定的网络接口,用于接收来自其他 broker 或客户端的连接。仅影响 broker 实际监听的地址,不影响客户端连接的地址。0.0.0.0:当 Kafka broker 启动时,它会在所有可用的网络接口上(如 eth0、eth1、lo 等)监听 9092 端口的连接请求。这意味着:

      docker run --privileged=true \
      --net my_network \
      --ip 192.168.1.5 \
      --log-driver json-file \
      --log-opt max-size=100m \
      --log-opt max-file=2 \
      --name kafka -p 9092:9092 \
      -e KAFKA_BROKER_ID=0 \
      -e KAFKA_ZOOKEEPER_CONNECT=192.168.1.4:2181/kafka \
      -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://14.103.144.189:9092 \
      -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
      -e ALLOW_PLAINTEXT_LISTENER=yes \
      -e KAFKA_HEAP_OPTS='-Xms256M -Xms512M' \
      -v /home/kafka/data:/wurstmeister/kafka/data \
      -v /home/kafka/config:/wurstmeister/kafka/config \
      -v /opt/kafka/config:/opt/kafka/config \
      -v /etc/localtime:/etc/localtime \
      -d wurstmeister/kafka
      

二、部署 ELK (8.4.3 版本)

1. 部署 elasticsearch

  • 拉取 elasticsearch 镜像:

    docker pull elasticsearch:8.4.3
    
  • 第一次执行容器:不用 -d 后台执行,需要记住首次运行生成的 随机密码 和随机 enrollment token

    • es 8.0版本默认是开启 xpack 安全验证的。xpack.security.enabled: true ,访问 es 需要用户名和密码

      docker run -it \
      	--net my_network \
      	--ip 192.168.1.6 \
          -p 9200:9200 \
          -p 9300:9300 \
          --name elasticsearch \
          -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
          -e "discovery.type=single-node" \
          -e LANG=C.UTF-8 \
          -e LC_ALL=C.UTF-8 \
          elasticsearch:8.4.3
      
  • 结果如下:

  • 在这里插入图片描述

  • 其中的 enrollment-token 需要在 kibana 第一次连接 es 是需要改token 进行验证、验证通过后再用 用户名和密码进行登录。先记住他

    • enrollment-token 的有效期只有30分钟,所以你要再 30 分钟内完成第一次验证,后续即便过期了就不需要在进行该 token 验证了。
    • 如果 enrollment-token 过期了,还未进行第一次验证,可进入 es容器 重新生成。
    • docker exec -it elasticsearch /bin/bash 进入 es 容器。
    • ./bin/elasticsearch-create-enrollment-token -s kibana --url “https://127.0.0.1:9200” 重新生成 token。
      在这里插入图片描述
  • 创建 es 需要在系统挂载的目录。需要挂载 es 的 data、config、logs、plugins、方便后续查阅或修改。

    • 创建目录并授权:

      mkdir /home/es/elk8.4.3/elasticsearch:
      chown -R 1000:1000 /home/es/elk8.4.3/elasticsearch
      
    • 将容器类的数据复制到主机上:

      docker cp elasticsearch:/usr/share/elasticsearch/config /home/es/elk8.4.3/elasticsearch/        
      docker cp elasticsearch:/usr/share/elasticsearch/data /home/es/elk8.4.3/elasticsearch/
      docker cp elasticsearch:/usr/share/elasticsearch/plugins /home/es/elk8.4.3/elasticsearch/
      docker cp elasticsearch:/usr/share/elasticsearch/logs /home/es/elk8.4.3/elasticsearch/
      
  • 删除 es 容器:docker rm -f elasticsearch

  • 创建 es 容器,并进行 目录挂载:

    docker run -it \
        -d \
        --net my_network \
    	--ip 192.168.1.6 \
        -p 9200:9200 \
        -p 9300:9300 \
        --name elasticsearch \
        -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
        -e "discovery.type=single-node" \
        -e LANG=C.UTF-8 \
        -e LC_ALL=C.UTF-8 \
        -v /home/es/elk8.4.3/elasticsearch/config:/usr/share/elasticsearch/config \
        -v /home/es/elk8.4.3/elasticsearch/data:/usr/share/elasticsearch/data \
        -v /home/es/elk8.4.3/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
        -v /home/es/elk8.4.3/elasticsearch/logs:/usr/share/elasticsearch/logs \
        elasticsearch:8.4.3
    
  • 我们修改 es 的配置文件,添加 xpack.monitoring.collection.enabled: true

    • xpack.monitoring.collection.enabled: true:Elasticsearch 或 Kibana 会定期收集自身的运行指标,像 CPU 使用率、内存占用情况、请求响应时间等。这些收集到的数据会被存储在 Elasticsearch 中,用户可以通过 Kibana 的监控界面进行查看。

      #----------------------- BEGIN SECURITY AUTO CONFIGURATION -----------------------
      #
      # The following settings, TLS certificates, and keys have been automatically      
      # generated to configure Elasticsearch security features on 05-06-2025 07:28:15
      #
      # --------------------------------------------------------------------------------
      
      # Enable security features
      xpack.security.enabled: true
      
      xpack.security.enrollment.enabled: true
      
      xpack.monitoring.collection.enabled : true
      
      # Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
      xpack.security.http.ssl:
        enabled: true
        keystore.path: certs/http.p12
          
      # Enable encryption and mutual authentication between cluster nodes
      xpack.security.transport.ssl:
        enabled: true
        verification_mode: certificate
        keystore.path: certs/transport.p12
        truststore.path: certs/transport.p12
      #----------------------- END SECURITY AUTO CONFIGURATION -------------------------
      
      
  • 容器 es 容器:docker restart elasticsearch

  • 访问 es:输入用户名密码,注意是 https

    在这里插入图片描述

  • 输入后可查看节点信息:

    在这里插入图片描述

  • 如果用户名密码不记得了,和进入es重置密码:

    • elasticsearch-reset-password -u elastic: 可对用户 elastic 重置密码。
    • elasticsearch-reset-password --username elastic -i:可指定密码。

2. 部署 kibana

  • 拉取镜像:

    docker pull kibana:8.4.3
    
  • 第一次运行容器:

    docker run -it \
    	-d \
    	--net my_network \
    	--ip 192.168.1.7 \
    	--restart=always \
    	--log-driver json-file \
    	--log-opt max-size=100m \
    	--log-opt max-file=2 \
    	--name kibana \
    	-p 5601:5601 \
    	kibana:8.4.3
    
  • 创建挂载目录并授权:

    mkdir /home/es/elk8.4.3/kibana
    sudo chown -R 1000:1000 /home/es/elk8.4.3/kibana
    
  • 将容器内的文件复制到主机上:

    docker cp kibana:/usr/share/kibana/config /home/es/elk8.4.3/kibana/        
    docker cp kibana:/usr/share/kibana/data /home/es/elk8.4.3/kibana/        
    docker cp kibana:/usr/share/kibana/plugins /home/es/elk8.4.3/kibana/        
    docker cp kibana:/usr/share/kibana/logs /home/es/elk8.4.3/kibana/        
    
  • 查看 kibana.yml 配置信息:

  • 注意:elasticsearch.hosts: [ "http://elasticsearch:9200" ],elasticsearch 为 在 docker 或 k8s中的服务名(容器名),使用127.0.0.1 或者 内网 ip,或 报 timeout 错误。如果若个es,可用逗号隔开。

  • 添加 i18n.locale: “zh-CN”,kibana 客户端调整为中文。

    #
    # ** THIS IS AN AUTO-GENERATED FILE **
    #
              
    # Default Kibana configuration for docker target
    server.host: "0.0.0.0"
    server.shutdownTimeout: "5s"
    elasticsearch.hosts: [ "http://elasticsearch:9200" ]
    monitoring.ui.container.elasticsearch.enabled: true
    i18n.locale: “zh-CN”
    
  • 删除 kibana 容器,进行挂载创建:

    docker rm -f kibana
    docker run -it \
    	-d \
    	--net my_network \
    	--ip 192.168.1.7 \
    	--restart=always \
    	--log-driver json-file \
    	--log-opt max-size=100m \
    	--log-opt max-file=2 \
    	--name kibana \
    	-p 5601:5601 \
    	-v /home/es/elk8.4.3/kibana/config:/usr/share/kibana/config \
    	-v /home/es/elk8.4.3/kibana/data:/usr/share/kibana/data \
    	-v /home/es/elk8.4.3/kibana/plugins:/usr/share/kibana/plugins \
    	-v /home/es/elk8.4.3/kibana/logs:/usr/share/kibana/logs \
    	kibana:8.4.3
    
  • 启动后访问 kibana,提示要填写 es 第一次启动时给的 enrollment-token 进行验证:
    在这里插入图片描述

  • 输入token以后会看到一个验证码框,验证码从kibana的日志中获取
    在这里插入图片描述
    在这里插入图片描述

  • 验证通过后,在输入在 es 中设置的用户名和密码:
    在这里插入图片描述

  • 登录成功后:

    在这里插入图片描述

  • 成功后再次查看 kibana.yml 配置文件,会自动生成配置,无需修改:
    在这里插入图片描述

3. 部署 Logstash

三、部署Nacos + mysql

  • nacos 我们采用mysql进行存储

  • 拉取镜像

    docker pull nacos/nacos-server:v2.1.1
    
  • 创建需要挂载的目录

    mkdir -p /data/nacos/{conf,logs,data}
    
  • 创建容器

    docker run -p 8848:8848 --name nacos -d nacos/nacos-server:v2.1.1
    
  • 拷贝 nacos 文件 并 授权

    docker cp nacos:/home/nacos/conf /data/nacos
    docker cp nacos:/home/nacos/data /data/nacos
    docker cp nacos:/home/nacos/logs /data/nacos
    chmod 777 /data/nacos/{conf,logs,data}
    
  • 删除容器

    docker rm -f nacos
    
  • 拉取 mysql 镜像 并创建挂载目录

    docker pull mysql:8.3.0
    # 创建挂载目录
    mkdir -p  /home/mysql/{conf,data,log}
    
  • 创建 配置文件

    cd /home/mysql/conf
    vim my.cnf
    
  • 添加如下配置

    [client]
    #设置客户端默认字符集utf8mb4
    default-character-set=utf8mb4
    [mysql]
    #设置服务器默认字符集为utf8mb4
    default-character-set=utf8mb4
    [mysqld]
    #配置服务器的服务号,具备日后需要集群做准备
    server-id = 1
    #开启MySQL数据库的二进制日志,用于记录用户对数据库的操作SQL语句,具备日后需要集群做准备
    log-bin=mysql-bin
    #设置清理超过30天的日志,以免日志堆积造过多成服务器内存爆满。2592000秒等于30天的秒数
    binlog_expire_logs_seconds = 2592000
    #解决MySQL8.0版本GROUP BY问题
    sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
    #允许最大的连接数
    max_connections=1000
    # 禁用符号链接以防止各种安全风险
    symbolic-links=0
    # 设置东八区时区
    default-time_zone = '+8:00'
    
    
  • 创建并运行 mysql 容器

    docker run \
    --net my_network \
    --ip 192.168.1.2 \
    -p 3306:3306 \
    --restart=always \
    --name mysql \
    --privileged=true \
    -v /home/mysql/log:/var/log/mysql \
    -v /home/mysql/data:/var/lib/mysql \
    -v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf \
    -e MYSQL_ROOT_PASSWORD=a12bCd3_W45pUq6 \
    -d mysql:8.3.0  
    
    
  • 创建 nacos 数据库

    /*
     Navicat Premium Data Transfer
    
     Source Server         : 159.75.111.41
     Source Server Type    : MySQL
     Source Server Version : 80033
     Source Host           : 159.75.111.41:3306
     Source Schema         : nacos
    
     Target Server Type    : MySQL
     Target Server Version : 80033
     File Encoding         : 65001
    
     Date: 30/03/2024 21:32:58
    */
    
    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for config_info
    -- ----------------------------
    DROP TABLE IF EXISTS `config_info`;
    CREATE TABLE `config_info`  (
      `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT 'id',
      `data_id` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT 'data_id',
      `group_id` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
      `content` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT 'content',
      `md5` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT 'md5',
      `gmt_create` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
      `gmt_modified` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '修改时间',
      `src_user` text CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL COMMENT 'source user',
      `src_ip` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT 'source ip',
      `app_name` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
      `tenant_id` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '' COMMENT '租户字段',
      `c_desc` varchar(256) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
      `c_use` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
      `effect` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
      `type` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
      `c_schema` text CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL,
      `encrypted_data_key` text CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL COMMENT '秘钥',
      PRIMARY KEY (`id`) USING BTREE,
      UNIQUE INDEX `uk_configinfo_datagrouptenant`(`data_id`, `group_id`, `tenant_id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin COMMENT = 'config_info' ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of config_info
    -- ----------------------------
    
    -- ----------------------------
    -- Table structure for config_info_aggr
    -- ----------------------------
    DROP TABLE IF EXISTS `config_info_aggr`;
    CREATE TABLE `config_info_aggr`  (
      `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT 'id',
      `data_id` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT 'data_id',
      `group_id` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT 'group_id',
      `datum_id` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT 'datum_id',
      `content` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '内容',
      `gmt_modified` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',
      `app_name` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
      `tenant_id` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '' COMMENT '租户字段',
      PRIMARY KEY (`id`) USING BTREE,
      UNIQUE INDEX `uk_configinfoaggr_datagrouptenantdatum`(`data_id`, `group_id`, `tenant_id`, `datum_id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin COMMENT = '增加租户字段' ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of config_info_aggr
    -- ----------------------------
    
    -- ----------------------------
    -- Table structure for config_info_beta
    -- ----------------------------
    DROP TABLE IF EXISTS `config_info_beta`;
    CREATE TABLE `config_info_beta`  (
      `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT 'id',
      `data_id` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT 'data_id',
      `group_id` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT 'group_id',
      `app_name` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT 'app_name',
      `content` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT 'content',
      `beta_ips` varchar(1024) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT 'betaIps',
      `md5` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT 'md5',
      `gmt_create` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
      `gmt_modified` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '修改时间',
      `src_user` text CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL COMMENT 'source user',
      `src_ip` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT 'source ip',
      `tenant_id` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '' COMMENT '租户字段',
      `encrypted_data_key` text CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL COMMENT '秘钥',
      PRIMARY KEY (`id`) USING BTREE,
      UNIQUE INDEX `uk_configinfobeta_datagrouptenant`(`data_id`, `group_id`, `tenant_id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin COMMENT = 'config_info_beta' ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of config_info_beta
    -- ----------------------------
    
    -- ----------------------------
    -- Table structure for config_info_tag
    -- ----------------------------
    DROP TABLE IF EXISTS `config_info_tag`;
    CREATE TABLE `config_info_tag`  (
      `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT 'id',
      `data_id` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT 'data_id',
      `group_id` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT 'group_id',
      `tenant_id` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '' COMMENT 'tenant_id',
      `tag_id` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT 'tag_id',
      `app_name` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT 'app_name',
      `content` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT 'content',
      `md5` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT 'md5',
      `gmt_create` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
      `gmt_modified` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '修改时间',
      `src_user` text CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL COMMENT 'source user',
      `src_ip` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT 'source ip',
      PRIMARY KEY (`id`) USING BTREE,
      UNIQUE INDEX `uk_configinfotag_datagrouptenanttag`(`data_id`, `group_id`, `tenant_id`, `tag_id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin COMMENT = 'config_info_tag' ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of config_info_tag
    -- ----------------------------
    
    -- ----------------------------
    -- Table structure for config_tags_relation
    -- ----------------------------
    DROP TABLE IF EXISTS `config_tags_relation`;
    CREATE TABLE `config_tags_relation`  (
      `id` bigint(0) NOT NULL COMMENT 'id',
      `tag_name` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT 'tag_name',
      `tag_type` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT 'tag_type',
      `data_id` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT 'data_id',
      `group_id` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT 'group_id',
      `tenant_id` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '' COMMENT 'tenant_id',
      `nid` bigint(0) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`nid`) USING BTREE,
      UNIQUE INDEX `uk_configtagrelation_configidtag`(`id`, `tag_name`, `tag_type`) USING BTREE,
      INDEX `idx_tenant_id`(`tenant_id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin COMMENT = 'config_tag_relation' ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of config_tags_relation
    -- ----------------------------
    
    -- ----------------------------
    -- Table structure for group_capacity
    -- ----------------------------
    DROP TABLE IF EXISTS `group_capacity`;
    CREATE TABLE `group_capacity`  (
      `id` bigint(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
      `group_id` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
      `quota` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '配额,0表示使用默认值',
      `usage` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '使用量',
      `max_size` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
      `max_aggr_count` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '聚合子配置最大个数,,0表示使用默认值',
      `max_aggr_size` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
      `max_history_count` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '最大变更历史数量',
      `gmt_create` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
      `gmt_modified` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '修改时间',
      PRIMARY KEY (`id`) USING BTREE,
      UNIQUE INDEX `uk_group_id`(`group_id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin COMMENT = '集群、各Group容量信息表' ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of group_capacity
    -- ----------------------------
    
    -- ----------------------------
    -- Table structure for his_config_info
    -- ----------------------------
    DROP TABLE IF EXISTS `his_config_info`;
    CREATE TABLE `his_config_info`  (
      `id` bigint(0) UNSIGNED NOT NULL,
      `nid` bigint(0) UNSIGNED NOT NULL AUTO_INCREMENT,
      `data_id` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
      `group_id` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
      `app_name` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT 'app_name',
      `content` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
      `md5` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
      `gmt_create` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0),
      `gmt_modified` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0),
      `src_user` text CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL,
      `src_ip` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
      `op_type` char(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
      `tenant_id` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '' COMMENT '租户字段',
      `encrypted_data_key` text CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL COMMENT '秘钥',
      PRIMARY KEY (`nid`) USING BTREE,
      INDEX `idx_gmt_create`(`gmt_create`) USING BTREE,
      INDEX `idx_gmt_modified`(`gmt_modified`) USING BTREE,
      INDEX `idx_did`(`data_id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin COMMENT = '多租户改造' ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of his_config_info
    -- ----------------------------
    INSERT INTO `his_config_info` VALUES (0, 1, '132', 'DEFAULT_GROUP', '', '123', '202cb962ac59075b964b07152d234b70', '2024-03-30 21:32:28', '2024-03-30 21:32:28', NULL, '212.87.195.237', 'I', '', NULL);
    INSERT INTO `his_config_info` VALUES (1, 2, '132', 'DEFAULT_GROUP', '', '123', '202cb962ac59075b964b07152d234b70', '2024-03-30 21:32:36', '2024-03-30 21:32:36', NULL, '212.87.195.237', 'D', '', NULL);
    
    -- ----------------------------
    -- Table structure for permissions
    -- ----------------------------
    DROP TABLE IF EXISTS `permissions`;
    CREATE TABLE `permissions`  (
      `role` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
      `resource` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
      `action` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
      UNIQUE INDEX `uk_role_permission`(`role`, `resource`, `action`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of permissions
    -- ----------------------------
    
    -- ----------------------------
    -- Table structure for roles
    -- ----------------------------
    DROP TABLE IF EXISTS `roles`;
    CREATE TABLE `roles`  (
      `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
      `role` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
      UNIQUE INDEX `idx_user_role`(`username`, `role`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of roles
    -- ----------------------------
    INSERT INTO `roles` VALUES ('nacos', 'ROLE_ADMIN');
    
    -- ----------------------------
    -- Table structure for tenant_capacity
    -- ----------------------------
    DROP TABLE IF EXISTS `tenant_capacity`;
    CREATE TABLE `tenant_capacity`  (
      `id` bigint(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
      `tenant_id` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL DEFAULT '' COMMENT 'Tenant ID',
      `quota` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '配额,0表示使用默认值',
      `usage` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '使用量',
      `max_size` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
      `max_aggr_count` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '聚合子配置最大个数',
      `max_aggr_size` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
      `max_history_count` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '最大变更历史数量',
      `gmt_create` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
      `gmt_modified` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '修改时间',
      PRIMARY KEY (`id`) USING BTREE,
      UNIQUE INDEX `uk_tenant_id`(`tenant_id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin COMMENT = '租户容量信息表' ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of tenant_capacity
    -- ----------------------------
    
    -- ----------------------------
    -- Table structure for tenant_info
    -- ----------------------------
    DROP TABLE IF EXISTS `tenant_info`;
    CREATE TABLE `tenant_info`  (
      `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT 'id',
      `kp` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT 'kp',
      `tenant_id` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '' COMMENT 'tenant_id',
      `tenant_name` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '' COMMENT 'tenant_name',
      `tenant_desc` varchar(256) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT 'tenant_desc',
      `create_source` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT 'create_source',
      `gmt_create` bigint(0) NULL DEFAULT NULL COMMENT '创建时间',
      `gmt_modified` bigint(0) NULL DEFAULT NULL COMMENT '修改时间',
      PRIMARY KEY (`id`) USING BTREE,
      UNIQUE INDEX `uk_tenant_info_kptenantid`(`kp`, `tenant_id`) USING BTREE,
      INDEX `idx_tenant_id`(`tenant_id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin COMMENT = 'tenant_info' ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of tenant_info
    -- ----------------------------
    
    -- ----------------------------
    -- Table structure for users
    -- ----------------------------
    DROP TABLE IF EXISTS `users`;
    CREATE TABLE `users`  (
      `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
      `password` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
      `enabled` tinyint(1) NOT NULL,
      PRIMARY KEY (`username`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of users
    -- ----------------------------
    INSERT INTO `users` VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', 1);
    
    SET FOREIGN_KEY_CHECKS = 1;
    
    
    
  • 创建并运行nacos容器

    docker run -d \
    --net my_network \
    --ip 192.168.1.3 \
    -e MODE=standalone \
    --privileged=true \
    -e SPRING_DATASOURCE_PLATFORM=mysql \
    -e MYSQL_SERVICE_HOST=192.168.1.2 \
    -e MYSQL_SERVICE_PORT=3306 \
    -e MYSQL_SERVICE_USER=root \
    -e MYSQL_SERVICE_PASSWORD=a12bCd3_W45pUq6 \
    -e MYSQL_SERVICE_DB_NAME=nacos \
    -e TIME_ZONE='Asia/Shanghai' \
    -e NACOS_AUTH_ENABLE=true \
    -v /data/nacos/logs:/home/nacos/logs \
    -v /data/nacos/data:/home/nacos/data \
    -v /data/nacos/conf:/home/nacos/conf \
    -p 8848:8848 -p 9848:9848 -p 9849:9849 \
    --name nacos --restart=always nacos/nacos-server:v2.1.1
    
    
  • 最后访问 Nacos 控制台:

    在这里插入图片描述

四、部署 Minio

  • 下载镜像:
docker pull minio/minio:RELEASE.2025-04-22T22-12-26Z

– 运行镜像,并指定网络:

docker run -it \
	-d \
	--net my_network \
	--ip 192.168.1.12 \
	--restart=always \
	-v /data/minio/data:/data \
	--name minio \
	-p 9000:9000 \
	-p 9001:9001 \
	-e "MINIO_ROOT_USER=root" \
	-e "MINIO_ROOT_PASSWORD=root131413" \
	minio/minio:RELEASE.2025-04-22T22-12-26Z server /data --console-address ":9001"
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐