1. 程式人生 > 實用技巧 >Docker-compose常用軟體部署(mysql、redis、rabbitmq)

Docker-compose常用軟體部署(mysql、redis、rabbitmq)

Docker-compose常用軟體部署(mysql、redis、rabbitmq)

廢話不多說,下面就直接給出部署檔案已經啟動指令碼,這個會持續更新。以下的部署方式均是單例部署。高可用或者其他部署方案我會單獨寫相應的文章。

  • mysql資料庫
  • redis快取
  • rabbitmq訊息佇列

compose-mysql.yaml

version: '3'

# docker network create mysql_bridge
networks:
  mysql_bridge:
    driver: bridge

services:
   mysql-server:
     image: docker.io/mysql:5.7
     container_name: mysql-server
     restart: always
     environment:
       # 指定root密碼。不指定則會啟動失敗
       - MYSQL_ROOT_PASSWORD:123456
     volumes:
       # 同步本地時間
       - /etc/localtime:/etc/localtime:ro
       # 初始化執行的sql
       # - ./init:/docker-entrypoint-initdb.d/
       # db配置
       - ./conf/my.cnf:/etc/my.cnf
       # db檔案存放地址
       - ./db_data:/var/lib/mysql
     ports:
       - 3306:3306
     networks:
       - mysql_bridge

start-mysql.sh

#! /usr/bin/bash
# 定義一個名稱變數
network_name="mysql_bridge"

filterName=`docker network ls | grep $network_name | awk '{ print $2 }'`

if [ "$filterName" == "" ]; then
    # 不存在就建立
    docker network create $network_name
    echo "Created network $network_name success!!"
fi

docker-compose -f ./compose-mysql.yaml up -d
docker ps -a
docker logs -f mysql-server

compose-redis.yaml

version: '3'

# docker network create redis_bridge
networks:
  redis_bridge:
    driver: bridge
    
services:
   redis-server:
     image: docker.io/redis:latest
     container_name: redis-server
     restart: always
     command: redis-server --requirepass "123456"
     volumes:
        - ./redis_data:/var/lib/redis
     ports:
       - 6379:6379
     networks:
       - redis_bridge

start-redis.sh

#! /usr/bin/bash
# 定義一個名稱變數
network_name="redis_bridge"

filterName=`docker network ls | grep $network_name | awk '{ print $2 }'`

if [ "$filterName" == "" ]; then
    # 不存在就建立
    docker network create $network_name
    echo "Created network $network_name success!!"
fi

docker-compose -f ./compose-redis.yaml up -d
docker ps -a
docker logs -f redis-server

compose-rabbitmq.yaml

version: '3'

# docker network create rabbitmq_bridge
networks:
  rabbitmq_bridge:
    driver: bridge
    
services:
  rabbitmq:
    image: rabbitmq:management-alpine
    container_name: rabbitmq-server
    restart: always
    volumes:
      - ./data:/var/lib/rabbitmq
    environment:
      - RABBITMQ_DEFAULT_USER=ming
      - RABBITMQ_DEFAULT_PASS=ming123456
    ports:
      - "15672:15672"
      - "5672:5672"
    logging:
      driver: "json-file"
      options:
        max-size: "200k"
        max-file: "10"
    networks:
      - rabbitmq_bridge

start-rabbitmq.sh

#! /usr/bin/bash
# 定義一個名稱變數
network_name="rabbitmq_bridge"

filterName=`docker network ls | grep $network_name | awk '{ print $2 }'`

if [ "$filterName" == "" ]; then
    # 不存在就建立
    docker network create $network_name
    echo "Created network $network_name success!!"
fi

docker-compose -f ./compose-rabbitmq.yaml up -d
docker ps -a
docker logs -f rabbitmq-server