docker-compose

yml 复制代码
version: '3.8'

services:
  mysql:
    image: mysql:5.7.43
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      TZ: Asia/Shanghai
    ports:
      - "3306:3306"
    volumes:
      - /opt/docker/mysql/config/my.cnf:/etc/mysql/conf.d/my.cnf
      - /opt/docker/mysql/data:/var/lib/mysql
      - /opt/docker/mysql/logs:/var/log/mysql
      - /etc/localtime:/etc/localtime:ro  # 映射时间文件
      - /etc/timezone:/etc/timezone:ro     # 映射时区描述文件
    restart: always

  # my.cnf
  # [mysqld]
  # character-set-server = utf8mb4
  # collation-server = utf8mb4_general_ci
  # max_connections = 1000
  # innodb_buffer_pool_size = 1G

  # [client]
  # default-character-set = utf8mb4


  redis:
    image: redis:7
    container_name: redis
    restart: always
    environment:
      - TZ=Asia/Shanghai          # 设置容器时区
    ports:
      - "6379:6379"
    volumes:
      - /opt/docker/redis/data:/data        # 数据持久化目录
      - /opt/docker/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf  # 配置文件
      - /opt/docker/redis/logs:/var/log/redis  # 日志目录
      - /etc/localtime:/etc/localtime:ro  # 宿主机时间同步
    command:
      redis-server /usr/local/etc/redis/redis.conf

  # redis.conf
  # # 基础配置
  # bind 0.0.0.0
  # port 6379
  # timeout 0
  # tcp-keepalive 300

  # # 安全配置
  # requirepass Cc68db0e

  # # 持久化配置
  # save 900 1
  # save 300 10
  # save 60 10000
  # stop-writes-on-bgsave-error no
  # rdbcompression yes
  # rdbchecksum yes
  # dbfilename dump.rdb
  # dir /data

  # # 内存管理
  # maxmemory 2gb
  # maxmemory-policy allkeys-lru

  # # 日志配置
  # loglevel notice
  # logfile /var/log/redis/redis.log

  # # 其他优化
  # daemonize no
  # protected-mode no
  # appendonly yes
  # appendfsync everysec

  elasticsearch:
    image: elasticsearch:8.13.4      # 指定版本(建议与Kibana版本一致)
    container_name: elasticsearch
    restart: always
    environment:
      - discovery.type=single-node   # 单节点模式
      - ES_JAVA_OPTS=-Xms2g -Xmx2g   # JVM内存分配
      - TZ=Asia/Shanghai             # 时区配置
      - ELASTIC_PASSWORD=Cc68db0e  # 必须设置密码
      - xpack.security.enabled=true  # 启用安全功能
      # - xpack.security.http.ssl.enabled=false # 禁用HTTPS(测试环境)
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /opt/docker/es/data:/usr/share/elasticsearch/data          # 数据目录
      - /opt/docker/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml # 配置文件
      - /opt/docker/es/plugins:/usr/share/elasticsearch/plugins    # 插件目录
      - /opt/docker/es/certs:/usr/share/elasticsearch/config/certs # 证书目录
      - /etc/localtime:/etc/localtime:ro                # 宿主机时间同步
    ports:
      - "9200:9200"      # HTTP API
      - "9300:9300"      # 节点通信

# elasticsearch.yml
#cluster.name: my-es-cluster
#node.name: node-1
#network.host: 0.0.0.0
#
## 安全配置(自动生成证书)
## # xpack.security.http.ssl:
## #   enabled: true
## #   keystore.path: certs/http.p12
## #   truststore.path: certs/http.p12
##
## # 内存锁定配置
#bootstrap.memory_lock: true
#
## # 跨域配置(需要可视化工具时)
#http.cors.enabled: true
#http.cors.allow-origin: "*"


  nacos:
    image: nacos/nacos-server:v2.5.1  # 指定稳定版本
    container_name: nacos-server
    environment:
      MODE: standalone            # 单机模式
      SPRING_DATASOURCE_PLATFORM: mysql
      MYSQL_SERVICE_HOST: 10.10.10.20   # 使用服务名通信
      MYSQL_SERVICE_PORT: 3306
      MYSQL_SERVICE_DB_NAME: nacos_config
      MYSQL_SERVICE_USER: root
      MYSQL_SERVICE_PASSWORD: root
      NACOS_AUTH_ENABLE: "true"        # 开启鉴权
      NACOS_AUTH_TOKEN: SecretKey012345678901234567890123456789012345678901234567890123456789 # 自定义Token(生产必改)
      NACOS_AUTH_IDENTITY_KEY: nacosAuthIdentityKey
      NACOS_AUTH_IDENTITY_VALUE: nacosAuthIdentityValue
      JVM_XMS: 1g                # 初始堆内存
      JVM_XMX: 1g                # 最大堆内存
      TZ: Asia/Shanghai           # 时区
    ports:
      - "8848:8848"              # Web控制台
      - "9848:9848"              # gRPC通信
    volumes:
      - /opt/docker/nacos/logs:/home/nacos/logs
      - /opt/docker/nacos/conf:/home/nacos/conf  # 自定义配置文件挂载