Skip to content

开发环境部署

约 628 字大约 2 分钟

2025-11-04

部署mysql

version: '3.1'

services:
  mysql-master:
    image: registry.cn-guangzhou.aliyuncs.com/devyunze/mysql:8.4.6
    environment:
      MYSQL_ROOT_PASSWORD: masterpassword
      MYSQL_DATABASE: mydb
    ports:
      - "3306:3306"
    #如果要挂载目录文件请释放开此配置 如果使用阿里云会报错请注释此内容
  # volumes:
  #  - ./mysql:/var/lib/mysql
    
    
    command: --server-id=1 --log-bin=mysql-bin --binlog-format=ROW --default-authentication-plugin=mysql_native_password

  mysql-slave:
    image: registry.cn-guangzhou.aliyuncs.com/devyunze/mysql:8.4.6
    environment:
      MYSQL_ROOT_PASSWORD: slavepassword
      MYSQL_DATABASE: mydb
    ports:
      - "3307:3306"
    #如果要挂载目录文件请释放开此配置如果使用阿里云会报错请注释此内容
  # volumes:
   #  - ./mysqls:/var/lib/mysql

    command: --server-id=2 --default-authentication-plugin=mysql_native_password
    depends_on:
      - mysql-master

  setup-master-slave:
    image: registry.cn-guangzhou.aliyuncs.com/devyunze/mysql:8.4.6
    environment:
      MYSQL_ROOT_PASSWORD: masterpassword
    depends_on:
      - mysql-master
      - mysql-slave
    command: >
      bash -c "
        echo 'Setting up master-slave replication...';
        sleep 300;
        MYSQL_PWD=masterpassword mysql -h mysql-master -uroot -e '
          CREATE USER \"replica\"@\"%\" IDENTIFIED WITH mysql_native_password BY \"replicapassword\";
          GRANT REPLICATION SLAVE ON *.* TO \"replica\"@\"%\";
          FLUSH PRIVILEGES;
          FLUSH TABLES WITH READ LOCK;
          SHOW MASTER STATUS\G' > master_status;
        MASTER_LOG_FILE=\$$(cat master_status | grep File: | awk '{print \$$2}');
        MASTER_LOG_POS=\$$(cat master_status | grep Position: | awk '{print \$$2}');
        MYSQL_PWD=slavepassword mysql -h mysql-slave -uroot -e '
          CHANGE MASTER TO MASTER_HOST=\"mysql-master\", MASTER_USER=\"replica\", MASTER_PASSWORD=\"replicapassword\", MASTER_LOG_FILE='\$$MASTER_LOG_FILE', MASTER_LOG_POS='\$$MASTER_LOG_POS';
          START SLAVE;';
        echo 'Replication setup complete.';
      "

部署reids集群

version: '2.2'

services:
  redis-node1:
    image: registry.cn-guangzhou.aliyuncs.com/devyunze/redis:7.4.5
    container_name: 'redis-node-1'
    command: redis-server --port 7000 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --requirepass foobared --masterauth foobared --cluster-announce-ip 192.168.3.237
    ports:
      - "7000:7000"
      - "17000:17000"
    volumes:
      - ./data/node1:/data
    networks:
      - redis-cluster

  redis-node2:
    image: registry.cn-guangzhou.aliyuncs.com/devyunze/redis:7.4.5
    container_name: 'redis-node-2'
    command: redis-server --port 7001 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --requirepass foobared --masterauth foobared --cluster-announce-ip 192.168.3.237
    ports:
      - "7001:7001"
      - "17001:17001"
    volumes:
      - ./data/node2:/data
    networks:
      - redis-cluster

  redis-node3:
    image: registry.cn-guangzhou.aliyuncs.com/devyunze/redis:7.4.5
    container_name: 'redis-node-3'
    command: redis-server --port 7002 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --requirepass foobared --masterauth foobared --cluster-announce-ip 192.168.3.237
    ports:
      - "7002:7002"
      - "17002:17002"
    volumes:
      - ./data/node3:/data
    networks:
      - redis-cluster

  redis-node4:
    image: registry.cn-guangzhou.aliyuncs.com/devyunze/redis:7.4.5
    container_name: 'redis-node-4'
    command: redis-server --port 7003 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --requirepass foobared --masterauth foobared --cluster-announce-ip 192.168.3.237
    ports:
      - "7003:7003"
      - "17003:17003"
    volumes:
      - ./data/node4:/data
    networks:
      - redis-cluster

  redis-node5:
    image: registry.cn-guangzhou.aliyuncs.com/devyunze/redis:7.4.5
    container_name: 'redis-node-5'
    command: redis-server --port 7004 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --requirepass foobared --masterauth foobared --cluster-announce-ip 192.168.3.237
    ports:
      - "7004:7004"
      - "17004:17004"
    volumes:
      - ./data/node5:/data
    networks:
      - redis-cluster

  redis-node6:
    image: registry.cn-guangzhou.aliyuncs.com/devyunze/redis:7.4.5
    container_name: 'redis-node-6'
    command: redis-server --port 7005 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --requirepass foobared --masterauth foobared --cluster-announce-ip 192.168.3.237
    ports:
      - "7005:7005"
      - "17005:17005"
    volumes:
      - ./data/node6:/data
    networks:
      - redis-cluster
networks:
  redis-cluster:

随便进入一个容器

docker exec -it redis-node-1 /bin/bash

在容器里执行如下命令

redis-cli -a foobared --cluster create --cluster-replicas 1 192.168.3.237:7000 192.168.3.237:7001 192.168.3.237:7002 192.168.3.237:7003 192.168.3.237:7004 192.168.3.237:7005

部署rocketmq

version: '2.2'

services:
  namesrv:
    image: registry.cn-guangzhou.aliyuncs.com/devyunze/rocketmq:5.3.3
    container_name: rocketmq-namesrv
    ports:
      - "9876:9876"
    command: "sh mqnamesrv"

  broker:
    image: registry.cn-guangzhou.aliyuncs.com/devyunze/rocketmq:5.3.3
    container_name: rocketmq-broker
    environment:
      - NAMESRV_ADDR=namesrv:9876
    ports:
      - "10911:10911"
      - "10909:10909"
    depends_on:
      - namesrv
    command: "sh mqbroker -n namesrv:9876"