1. 程式人生 > 其它 >docker-compose搭建Docker環境的各種中介軟體服務

docker-compose搭建Docker環境的各種中介軟體服務

MySQL

docker-compose.yml

version: '2'
services:
    mysql:
        network_mode: "bridge"
        environment:
            MYSQL_ROOT_PASSWORD: "Mysql@1111"
            MYSQL_USER: 'test'
            MYSQL_PASS: '1111'
        image: "mysql:5.7"
        restart: always
        volumes:
            - "./db:/var/lib/mysql"
            - "./conf/my.cnf:/etc/my.cnf"
            - "./init:/docker-entrypoint-initdb.d/"
        ports:
            - "3306:3306"

my.cnf

[mysqld]
user=mysql
default-storage-engine=INNODB
character-set-server=utf8
max_allowed_packet=10485760
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

Redis

單機模式

docker-compose.yml

version: '2'
services:
  master:
    image: redis        ## 映象
    container_name: redis-single       ##容器別名
    command: redis-server --save 900 1 --save 300 10 --save 10 10000  --requirepass Zdk@2020 ##redis密碼
    restart: always
    ports:
        - "6379:6379"              ##暴露埠
    volumes:
        - ./redis.conf:/etc/redis/redis.conf
        - ./data:/data

哨兵

redis服務(一主二從)docker-compose.yml(該配置存在問題:啟動一段時間後會瘋狂佔用消耗硬體資源,暫未查出原因,不可照搬使用)

version: '2'
services:
  master:
    image: redis        ## 映象
    container_name: redis-master       ##容器別名
    command: redis-server --save 900 1 --save 300 10 --save 10 10000  --requirepass Zdk@2020 ##redis密碼
    #    restart: always
    ports:
        - "6379:6379"              ##暴露埠
    volumes:
        - ./redis.conf:/etc/redis/redis.conf
        - ./data/6379/data:/data
#    networks:
#        - sentinel-master
  slave1:
    image: redis
    container_name: redis-slave-1
    #    restart: always
    ports:
        - "6380:6379"
    command: redis-server --save 900 1 --save 300 10 --save 10 10000  --slaveof redis-master 6379 
                         --requirepass Zdk@2020 --masterauth Zdk@2020 
    depends_on:
        - master
    volumes:
        - ./redis.conf:/etc/redis/redis.conf
        - ./data/6380/data:/data
#    networks:
#        - sentinel-master
  slave2:
    image: redis
    container_name: redis-slave-2
    # restart: always
    ports:
        - "6381:6379"
    command: redis-server --slaveof redis-master 6379 --save 900 1 --save 300 10 --save 10 10000 
                         --requirepass Zdk@2020 --masterauth Zdk@2020
    depends_on:
        - master
    volumes:
        - ./redis.conf:/etc/redis/redis.conf
        - ./data/6381/data:/data

三哨兵docker-compose.yml

version: '2'
services:
  sentinel1:
    image: redis       ## 映象
    container_name: redis-sentinel-1
    #    restart: always
    ports:
        - "26379:26379"
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    volumes:
        - "./sentinel1.conf:/usr/local/etc/redis/sentinel.conf"
  sentinel2:
    image: redis                ## 映象
    container_name: redis-sentinel-2
    #    restart: always
    ports:
        - "26380:26379"           
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    volumes:
        - "./sentinel2.conf:/usr/local/etc/redis/sentinel.conf"
  sentinel3:
    image: redis                ## 映象
    container_name: redis-sentinel-3
    #    restart: always
    ports:
        - "26381:26379"           
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    volumes:
        - ./sentinel3.conf:/usr/local/etc/redis/sentinel.conf
networks:
  default:
    external:
      name: service_default

sentinel.conf

port 26379
dir "/tmp"
#172.18.0.3填寫自己的主節點ip
sentinel myid 3af80a2d2e356259870dcee86ec4c924cc06097b
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 172.18.0.4 6379 2
sentinel failover-timeout mymaster 10000
sentinel auth-pass mymaster Zdk@2020
sentinel config-epoch mymaster 10

zookeeper

version: '2'
services:
    zoo1:
        image: zookeeper
        restart: always
        container_name: zoo1
        ports:
             - 2181:2181
        volumes:
             - ./zoo1/data:/data
             - ./zoo1/datalog:/datalog
        environment:
             ZOO_MY_ID: 1
             ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    zoo2:
        image: zookeeper
        restart: always
        container_name: zoo2
        ports:
             - 2182:2181
        volumes:
             - ./zoo2/data:/data
             - ./zoo2/datalog:/datalog
        environment:
             ZOO_MY_ID: 2
             ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    zoo3:
        image: zookeeper
        restart: always
        container_name: zoo3
        ports:
             - 2183:2181
        volumes:        
             - ./zoo3/data:/dada        
             - ./zoo3/datalog:/datalog
                                 
        environment:
             ZOO_MY_ID: 3 
             ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181

RocketMQ

version: '3.5'
services: 
  rmqnamesrv: 
    image: foxiswho/rocketmq:server
    container_name: rmqnamesrv
    ports: 
      - 9876:9876
    volumes: 
      - ./data/logs:/opt/logs 
      - ./data/store:/opt/store 
    networks: 
        rmq: 
          aliases: 
            - rmqnamesrv

  rmqbroker: 
    image: foxiswho/rocketmq:broker
    container_name: rmqbroker 
    ports: 
      - 10909:10909
      - 10911:10911
    volumes: 
      - ./data/logs:/opt/logs
      - ./data/store:/opt/store
      - ./data/brokerconf/broker.conf:/etc/rocketmq/broker.conf
    environment: 
        NAMESRV_ADDR: "rmqnamesrv:9876"
        JAVA_OPTS: " -Duser.home=/opt"
        JAVA_OPT_EXT: "-server -Xms128m -Xmn128m"
    command: mqbroker -c /etc/rocketmq/broker.conf
    depends_on: 
      - rmqnamesrv
    networks: 
      rmq: 
        aliases: 
          - rmqbroker

  rmqconsole: 
    image: styletang/rocketmq-console-ng
    container_name: rmqconsole
    ports: 
      - 8088:8080
    environment: 
        JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
    depends_on: 
      - rmqnamesrv
    networks: 
      rmq: 
        aliases: 
          - rmqconsole

networks: 
  rmq: 
    name: rmq
    driver: bridge

Kafka

version: '3'
services:
  kafka:
    image: wurstmeister/kafka
    container_name: kafka
    ports:
      - 9092:9092
    # host ip
    environment:
      KAFKA_ADVERTISED_HOST_NAME: localhost
      KAFKA_ZOOKEEPER_CONNECT: 172.23.51.10:2181
    # always restart
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

Elasticsearch

version: '3'
services:
    # search engine
    elasticsearch:
#        image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.0.1
        image: elasticsearch:7.9.0
        container_name: elasticsearch
        environment:
            - discovery.type=single-node
            - http.port=9200
            - http.cors.enabled=true
            - http.cors.allow-origin=http://localhost:1358
            - http.cors.allow-origin=*
            - http.cors.allow-origin=http://localhost:1358,http://127.0.0.1:1358
            - http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization
            - http.cors.allow-credentials=false
            - bootstrap.memory_lock=true
            - 'ES_JAVA_OPTS=-Xms512m -Xmx512m'
        volumes:
            - ./data:/usr/share/elasticsearch/data
        ports:
            - '9200:9200'
            - '9300:9300'
    # elasticsearch browser
    dejavu:
        image: appbaseio/dejavu:3.2.3
        container_name: dejavu
        ports:
            - '1358:1358'
        links:
            - elasticsearch