利用docker编排文件安装软件

发布于:2025-04-09 ⋅ 阅读:(59) ⋅ 点赞:(0)

1. 安装redis

  1. 创建配置文件redis-docker-compose.yml
version: '2.33.1'  # 指定Docker Compose文件的版本。

services:
  redis:
    image: redis:6  # 使用Redis官方镜像,并指定版本为6。
    container_name: redis_6  # 设置容器启动后的名称,便于识别和管理。
    command: ["redis-server", "--requirepass", "password"]  # 启动命令,设置Redis需要密码才能访问。
    ports:
      - "6379:6379"  # 将主机的6379端口映射到容器的6379端口(Redis默认端口)。
    volumes:
      - /root/volumes/redis_data:/data  # 挂载一个名为redis_data的数据卷到容器内Redis的数据目录,确保数据不会因为容器删除而丢失。
      #- ./redis.conf:/usr/local/etc/redis/redis.conf  # 可选:挂载自定义Redis配置文件到容器中,允许更细致地调整Redis配置。
    restart: unless-stopped  # 容器退出时总是重启容器,除非手动停止了容器。
      #
      #    volumes:
      #      redis_data:  # 数据卷名称,与上面的volume对应,用于持久化Redis数据。
      #          external: false  # 如果设置为true,则表示该卷已经在Docker之外创建好了,否则Docker会自动创建这个卷。


  1. 启动
docker-compose -f redis-docker-compose.yml up -d

2. 安装MySQL

  1. 创建配置文件MySQL-docker-compose.yml
version: '2.33.1'  # 指定Docker Compose文件的版本。3.8是支持的稳定版本之一,兼容大多数Docker功能。

services:  # 定义服务列表
  mysql:  # 自定义服务名称(这里命名为mysql)
    image: mysql:8.0.32  # 使用MySQL官方镜像,并指定版本为8.0.32。
    container_name: mysql_8_0_32  # 设置容器启动后的名称,便于识别和管理。
    environment:  # 设置环境变量,这些变量会被MySQL在容器内部初始化时使用。
      MYSQL_ROOT_PASSWORD: root  # 必须设置root用户的密码,请替换为实际安全的密码。
      # MYSQL_DATABASE: optional_database  # 可选:创建容器时自动创建的数据库名称。
      # MYSQL_USER: optional_user  # 可选:创建一个新的用户。
      # MYSQL_PASSWORD: optional_password  # 可选:上述新用户的密码。
      MYSQL_INITDB_CHARSET: utf8mb4 # 默认字符集
      MYSQL_INITDB_COLLATION: utf8mb4_general_ci # 默认排序规则
      TZ: "Asia/Shanghai"  
    ports:  # 映射端口,使得主机可以访问容器内的服务。
      - "3306:3306"  # 将主机的3306端口映射到容器的3306端口(MySQL默认端口)。
    volumes:  # 定义数据卷,用于持久化存储数据。
      - /root/volumes/mysql_data:/var/lib/mysql  # 挂载一个名为db_data的数据卷到容器内MySQL的数据目录,确保数据不会因为容器删除而丢失。
      - /root/volumes/mysql_conf/my.cnf:/etc/mysql/my.cnf  # 可选:挂载自定义MySQL配置文件到容器中,允许更细致地调整MySQL配置。
    restart: unless-stopped  # 容器退出时总是重启容器,除非手动停止了容器。
    
#volumes:  # 定义外部使用的数据卷。
 # db_data:  # 数据卷名称,与上面的volume对应,用于持久化MySQL数据。
  #  external: false  # 如果设置为true,则表示该卷已经在Docker之外创建好了,否则Docker会自动创建这个卷。


  1. 启动
docker-compose -f MySQL-docker-compose.yml up -d

3. 安装单机版Nacos

  1. 创建配置文件Nacos-docker-compose.yml
version: '2.33.1'

services:
  nacos:
    image: nacos/nacos-server:v2.5.0  # 使用最新的官方Nacos镜像
    container_name: nacos_server  # 设置容器名称
    environment:
      MODE: standalone  # 设置为单机模式,简化部署
      SPRING_DATASOURCE_PLATFORM: mysql  # 设置数据源平台为MySQL(可选)
      MYSQL_SERVICE_HOST: 192.168.10.664  # MySQL服务的主机地址(如果需要持久化配置)
      MYSQL_SERVICE_PORT: "3306"  # MySQL服务端口
      MYSQL_SERVICE_DB_NAME: nacos  # MySQL数据库名称
      MYSQL_SERVICE_USER: root  # MySQL用户名
      MYSQL_SERVICE_PASSWORD: root  # MySQL密码
      NACOS_AUTH_ENABLE: true
      NACOS_AUTH_IDENTITY_KEY: SecretKey012345678901234567890123456789012345678901234567890123456789
      NACOS_AUTH_IDENTITY_VALUE: SecretKey012345678901234567890123456789012345678901234567890123456789
      NACOS_AUTH_TOKEN: SecretKey012345678901234567890123456789012345678901234567890123456789
      #SPRING_DATASOURCE_DRUID_INITIALSIZE: "1"
      #SPRING_DATASOURCE_DRUID_MINIDLE: "1"
      #SPRING_DATASOURCE_DRUID_MAXACTIVE: "20"
      MYSQL_SERVICE_DB_PARAM: "characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true"
    ports:
      - "8848:8848"  # 映射Nacos控制台端口到主机的8848端口
      - "9849:9849"  # grpc端口映射
      - "9848:9848"
    volumes:
      - /root/volumes/nacos_log/nacos-logs:/home/nacos/logs  # 挂载日志目录到本地,便于查看和保存日志

  1. 创建一个nacos的数据库,导入以下表结构
/* * Copyright 1999-2018 Alibaba Group Holding Ltd. *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and
* limitations under the License. */
/******************************************/
/*   表名称 = config_info                  */
/******************************************/
CREATE TABLE `config_info` (
  `id` BIGINT (20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` VARCHAR (255) NOT NULL COMMENT 'data_id',
  `group_id` VARCHAR (128) DEFAULT NULL COMMENT 'group_id',
  `content` LONGTEXT NOT NULL COMMENT 'content',
  `md5` VARCHAR (32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` TEXT COMMENT 'source user',
  `src_ip` VARCHAR (50) DEFAULT NULL COMMENT 'source ip',
  `app_name` VARCHAR (128) DEFAULT NULL COMMENT 'app_name',
  `tenant_id` VARCHAR (128) DEFAULT '' COMMENT '租户字段',
  `c_desc` VARCHAR (256) DEFAULT NULL COMMENT 'configuration description',
  `c_use` VARCHAR (64) DEFAULT NULL COMMENT 'configuration usage',
  `effect` VARCHAR (64) DEFAULT NULL COMMENT '配置生效的描述',
  `type` VARCHAR (64) DEFAULT NULL COMMENT '配置的类型',
  `c_schema` TEXT COMMENT '配置的模式',
  `encrypted_data_key` VARCHAR (1024) NOT NULL DEFAULT '' COMMENT '密钥',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`, `group_id`, `tenant_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = 'config_info';

/******************************************/
/*   表名称 = config_info  since 2.5.0                */
/******************************************/
CREATE TABLE `config_info_gray` (
  `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` VARCHAR (255) NOT NULL COMMENT 'data_id',
  `group_id` VARCHAR (128) NOT NULL COMMENT 'group_id',
  `content` LONGTEXT NOT NULL COMMENT 'content',
  `md5` VARCHAR (32) DEFAULT NULL COMMENT 'md5',
  `src_user` TEXT COMMENT 'src_user',
  `src_ip` VARCHAR (100) DEFAULT NULL COMMENT 'src_ip',
  `gmt_create` DATETIME (3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'gmt_create',
  `gmt_modified` DATETIME (3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'gmt_modified',
  `app_name` VARCHAR (128) DEFAULT NULL COMMENT 'app_name',
  `tenant_id` VARCHAR (128) DEFAULT '' COMMENT 'tenant_id',
  `gray_name` VARCHAR (128) NOT NULL COMMENT 'gray_name',
  `gray_rule` TEXT NOT NULL COMMENT 'gray_rule',
  `encrypted_data_key` VARCHAR (256) NOT NULL DEFAULT '' COMMENT 'encrypted_data_key',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfogray_datagrouptenantgray` (`data_id`, `group_id`, `tenant_id`, `gray_name`),
  KEY `idx_dataid_gmt_modified` (`data_id`, `gmt_modified`),
  KEY `idx_gmt_modified` (`gmt_modified`)
) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8 COMMENT = 'config_info_gray';

/******************************************/
/*   表名称 = config_tags_relation         */
/******************************************/
CREATE TABLE `config_tags_relation` (
  `id` BIGINT (20) NOT NULL COMMENT 'id',
  `tag_name` VARCHAR (128) NOT NULL COMMENT 'tag_name',
  `tag_type` VARCHAR (64) DEFAULT NULL COMMENT 'tag_type',
  `data_id` VARCHAR (255) NOT NULL COMMENT 'data_id',
  `group_id` VARCHAR (128) NOT NULL COMMENT 'group_id',
  `tenant_id` VARCHAR (128) DEFAULT '' COMMENT 'tenant_id',
  `nid` BIGINT (20) NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增长标识',
  PRIMARY KEY (`nid`),
  UNIQUE KEY `uk_configtagrelation_configidtag` (`id`, `tag_name`, `tag_type`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = 'config_tag_relation';

/******************************************/
/*   表名称 = group_capacity               */
/******************************************/
CREATE TABLE `group_capacity` (
  `id` BIGINT (20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `group_id` VARCHAR (128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
  `quota` INT (10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` INT (10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` INT (10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` INT (10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
  `max_aggr_size` INT (10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` INT (10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = '集群、各Group容量信息表';

/******************************************/
/*   表名称 = his_config_info              */
/******************************************/
CREATE TABLE `his_config_info` (
  `id` BIGINT (20) UNSIGNED NOT NULL COMMENT 'id',
  `nid` BIGINT (20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增标识',
  `data_id` VARCHAR (255) NOT NULL COMMENT 'data_id',
  `group_id` VARCHAR (128) NOT NULL COMMENT 'group_id',
  `app_name` VARCHAR (128) DEFAULT NULL COMMENT 'app_name',
  `content` LONGTEXT NOT NULL COMMENT 'content',
  `md5` VARCHAR (32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` TEXT COMMENT 'source user',
  `src_ip` VARCHAR (50) DEFAULT NULL COMMENT 'source ip',
  `op_type` CHAR(10) DEFAULT NULL COMMENT 'operation type',
  `tenant_id` VARCHAR (128) DEFAULT '' COMMENT '租户字段',
  `encrypted_data_key` VARCHAR (1024) NOT NULL DEFAULT '' COMMENT '密钥',
  `publish_type` VARCHAR (50) DEFAULT 'formal' COMMENT 'publish type gray or formal',
  `gray_name` VARCHAR (50) DEFAULT NULL COMMENT 'gray name',
  `ext_info` LONGTEXT DEFAULT NULL COMMENT 'ext info',
  PRIMARY KEY (`nid`),
  KEY `idx_gmt_create` (`gmt_create`),
  KEY `idx_gmt_modified` (`gmt_modified`),
  KEY `idx_did` (`data_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = '多租户改造';

/******************************************/
/*   表名称 = tenant_capacity              */
/******************************************/
CREATE TABLE `tenant_capacity` (
  `id` BIGINT (20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` VARCHAR (128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
  `quota` INT (10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` INT (10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` INT (10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` INT (10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
  `max_aggr_size` INT (10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` INT (10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = '租户容量信息表';
CREATE TABLE `tenant_info` (
  `id` BIGINT (20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `kp` VARCHAR (128) NOT NULL COMMENT 'kp',
  `tenant_id` VARCHAR (128) DEFAULT '' COMMENT 'tenant_id',
  `tenant_name` VARCHAR (128) DEFAULT '' COMMENT 'tenant_name',
  `tenant_desc` VARCHAR (256) DEFAULT NULL COMMENT 'tenant_desc',
  `create_source` VARCHAR (32) DEFAULT NULL COMMENT 'create_source',
  `gmt_create` BIGINT (20) NOT NULL COMMENT '创建时间',
  `gmt_modified` BIGINT (20) NOT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`, `tenant_id`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = 'tenant_info';
CREATE TABLE `users` (
  `username` VARCHAR (50) NOT NULL PRIMARY KEY COMMENT 'username',
  `password` VARCHAR (500) NOT NULL COMMENT 'password',
  `enabled` boolean NOT NULL COMMENT 'enabled'
);
CREATE TABLE `roles` (
  `username` VARCHAR (50) NOT NULL COMMENT 'username',
  `role` VARCHAR (50) NOT NULL COMMENT 'role',
  UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);
CREATE TABLE `permissions` (
  `role` VARCHAR (50) NOT NULL COMMENT 'role',
  `resource` VARCHAR (128) NOT NULL COMMENT 'resource',
  `action` VARCHAR (8) NOT NULL COMMENT 'action',
  UNIQUE INDEX `uk_role_permission` (`role`, `resource`, `action`) USING BTREE
);
  1. 启动
docker-compose -f Nacos-docker-compose.yml up -d

4. 安装RabbitMQ

  1. 创建配置文件RabbitMQ-docker-compose.yml
version: '2.33.1'

services:
  rabbitmq:
    image: rabbitmq:4.0.7-management  # 使用包含管理插件的RabbitMQ镜像
    container_name: rabbitmq_service  # 容器名称
    environment:
      - RABBITMQ_DEFAULT_USER=admin  # 设置默认用户
      - RABBITMQ_DEFAULT_PASS=admin  # 设置默认密码
    ports:
      - "5672:5672"  # AMQP协议端口
      - "15672:15672"  # 管理界面端口
    volumes:
      - /root/rabbitmq_data:/var/lib/rabbitmq/  # 数据持久化
    networks:
      - rabbitmqnet

#volumes:
##  rabbitmq_data:
#
networks:
  rabbitmqnet:
      driver: bridge

  1. 启动
docker-compose -f RabbitMQ-docker-compose.yml up -d

5. 安装elasticsearch

  1. 创建配置文件es-docker-compose.yml
version: '2.33.1'  # 定义版本,确保兼容性

services:
  es:  # Elasticsearch服务名称
    image: elasticsearch:7.17.25  # 使用的镜像和标签
    container_name: es_service  # 容器名称
    environment:  # 环境变量设置
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"  # 设置JVM堆大小最小和最大为512MB
      - "discovery.type=single-node"  # 配置Elasticsearch以单节点模式运行
    volumes:  # 挂载卷,用于数据持久化和插件安装
      - /root/volumes/es_data:/usr/share/elasticsearch/data  # 数据存储卷
      - /root/volumes/es_plugins:/usr/share/elasticsearch/plugins  # 插件存储卷
      - /root/volumes/es_conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  # 挂载自定义配置文件
    ports:  # 端口映射,将容器端口暴露给主机
      - "9200:9200"  # HTTP REST API端口
      - "9300:9300"  # 节点间通信端口
    networks:  # 自定义网络,使服务可以互相通信
      - es-net
    privileged: true  # 提升权限,有时需要访问低级系统资源
    user: "1000:1000"  # 使用与宿主机上挂载目录相同的UID和GID
  kibana:  # Kibana服务名称
    image: kibana:7.17.25  # 使用的镜像和标签
    container_name: kibana  # 容器名称
    environment:  # 环境变量设置
      - ELASTICSEARCH_HOSTS=http://es:9200  # Elasticsearch地址,通过服务名连接
      - ELASTICSEARCH_USERNAME=kibana  # 添加Kibana连接Elasticsearch的用户名
      - ELASTICSEARCH_PASSWORD=kibana # 替换为您的kibana_system用户的密码
    ports:  # 端口映射,将容器端口暴露给主机
      - "5601:5601"  # Kibana Web界面端口
    networks:  # 加入自定义网络以便与Elasticsearch通信
      - es-net
    depends_on:  # 确保Kibana在Elasticsearch启动之后再启动
      - es
networks:  # 网络配置
  es-net:  # 自定义网络名称
    driver: bridge  # 明确指定网络驱动类型为bridge

  1. 启动
docker-compose -f es-docker-compose.yml up -d