version: '3'
services: 
  mysql:
    image: service.pickmall.cn:16040/middleware/mysql:8.0.33
    restart: always
    container_name: mysql
    volumes:
      - ../volumes/data/mysqldata:/var/lib/mysql
      - ./config/my.cnf:/etc/mysql/conf.d/my.cnf
      #      数据库还原目录 可将需要还原的sql文件放在这里
      - ./init/mysql:/docker-entrypoint-initdb.d
    environment:
      - "MYSQL_ROOT_PASSWORD=lilishop"
      - "MYSQL_DATABASE=lilishop"
      - "TZ=Asia/Shanghai"
    ports:
      - 3306:3306

  redis:
    image: service.pickmall.cn:16040/middleware/redis:7.0.8
    restart: always
    container_name: 'redis'
    ports:
      - 6379:6379
    volumes: 
      - ../volumes/data/redsidata:/data
    command: redis-server --port 6379 --requirepass lilishop --appendonly yes --protected-mode no

  elasticsearch:
    image: service.pickmall.cn:16040/middleware/elasticsearch:7.17.9
    restart: always
    container_name: elasticsearch
    volumes:
      # 映射本地目录权限一定要设置为 777 权限，否则启动不成功
      # - ../volumes/data/es7/logs:/usr/share/elasticsearch/logs:rw
      # - ../volumes/data/es7/data:/usr/share/elasticsearch/data:rw
      - ./config/ik:/usr/share/elasticsearch/plugins/ik
      #      - "./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml"
    ports: 
      - "9200:9200"
      - "9300:9300"
    environment:
      - cluster.name=elasticsearch
      - discovery.type=single-node
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    logging:
      driver: "json-file"
      options:
        max-size: "50m"
    networks: 
      - stack
    ulimits:
      nofile:
          soft: 65535
          hard: 65535

  kibana:
    image: service.pickmall.cn:16040/middleware/kibana:7.17.9
    restart: always
    container_name: kibana
    ports:
      - 5601:5601
    # volumes:
            #    - "./config/kibana.yml:/usr/share/kibana/config/kibana.yml"
    networks: 
      - stack
    depends_on: ['elasticsearch']  


  logstash:
    image: service.pickmall.cn:16040/middleware/logstash:7.17.9
    restart: always
    container_name: logstash
    volumes:
      - ./config/logstash-springboot.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件
    networks: 
      - stack
    depends_on: ['elasticsearch']
    ports: 
      - 4560:4560
    
 # rocket mq name server
  rmqnamesrv:
    image: service.pickmall.cn:16040/middleware/apache/rocketmq:4.9.7
    restart: always
    container_name: rocket-server
    # environment:
    #   JAVA_OPT_EXT: "-server -Xms64m -Xmx64m -Xmn64m"
    # volumes:
      # 映射本地目录权限一定要设置为 777 权限，否则启动不成功
      # - ../volumes/data/rocket/server/logs:/home/rocketmq/logs
    networks:
      - rocketmq
    ports:
      - 9876:9876
    command: sh mqnamesrv
  # rocket mq broker
  rmqbroker:
    image: service.pickmall.cn:16040/middleware/apache/rocketmq:4.9.7
    restart: always
    container_name: rocket-broker
    volumes:
      # 映射本地目录权限一定要设置为 777 权限，否则启动不成功
      # - ../volumes/data/rocket/broker/logs:/home/rocketmq/logs
      # - ../volumes/data/rocket/broker/store:/home/rocketmq/store
      - ./config/broker.conf:/opt/rocketmq-4.9.7/conf/broker.conf
    environment:
      - NAMESRV_ADDR=rmqnamesrv:9876
      # - JAVA_OPTS:=-Duser.home=/opt
      - JAVA_OPT_EXT=-server -Xms64m -Xmx64m -Xmn64m
    depends_on:
      - rmqnamesrv
    networks:
      - rocketmq
    ports:
      - 10909:10909
      - 10911:10911
    command: sh mqbroker -c /opt/rocketmq-4.9.7/conf/broker.conf
  # rocket console 这个可以不需要
  rmqdashboard:
    image: service.pickmall.cn:16040/middleware/apacherocketmq/rocketmq-dashboard:1.0.0
    restart: always
    container_name: rocket-dashboard
    environment:
      - JAVA_OPTS=-Drocketmq.config.namesrvAddr=rmqnamesrv:9876 -Dserver.port=8180 -Drocketmq.config.isVIPChannel=false
      # - JAVA_OPT_EXT=-Xms128m -Xmx128m -Xmn128m
    depends_on:
      - rmqnamesrv
    networks:
      - rocketmq
    ports:
      - 8180:8180
  # xxl-job 分布式调度中心
  xxl-job:
    image: service.pickmall.cn:16040/middleware/xuxueli/xxl-job-admin:2.3.0
    restart: always
    container_name: xxl-job
    environment:
      - PARAMS=--spring.datasource.url=jdbc:mysql://mysql:3306/lilishop?Unicode=true&characterEncoding=UTF-8  --spring.datasource.username=root --spring.datasource.password=lilishop --server.port=9001
    depends_on:
      - mysql
    volumes:
      - ../volumes/data/xxl-job:/data/applogs
    ports:
      - 9001:9001
networks: 
  rocketmq:
    driver: bridge
  stack:
    driver: bridge

