Docker Compose部署各类组件

整个部署组件的代码都在Gitee或者Github地址内

Gitee:  https://gitee.com/steven_Huang/solomon-parent​​​​​​​

Github:  https://github.com/ZeroNing/solomon-parent

部署Emqx(Mqtt)

1.写docker-compose.yml文件

version:  '3'
services:
    emqx:
      image:  emqx/emqx:latest
      container_name:  emqx
      ports:
        -  "1883:1883"  #  MQTT  客户端连接端口
        -  "8083:8083"  #  HTTP  API  端口
        -  "18083:18083"  #  Dashboard  端口
      environment:
        -  EMQX_LOADED_PLUGINS="emqx_dashboard,emqx_retainer,emqx_webhook"
      volumes:
        -  ./data:/opt/emqx/data  #  挂载数据卷
        -  ./logs:/opt/emqx/logs  #  挂载日志卷
      restart:  always

2.新增log文件夹以及data文件夹,外挂数据以及日志

部署Minio

1.写docker-compose.yml文件

version: '3'

services:
  minio:
    image: minio/minio
    container_name: minio
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      MINIO_ACCESS_KEY: admin #登陆账号
      MINIO_SECRET_KEY: admin #登陆密码
    volumes:
      - ./data:/data
    command: server /data --console-address ":9001"
    restart:  always

2.新增data文件夹,外挂数据

部署MongoDB

1.写docker-compose.yml文件

version: '3'

services:
  mongodb:
    image: mongo:latest
    container_name: mongo
    ports:
      - "27017:27017"
    volumes:
      - ./data:/data/db
    environment:
      MONGO_INITDB_ROOT_USERNAME: root #账号
      MONGO_INITDB_ROOT_PASSWORD: root #密码
    restart:  always

2.新增data文件夹,外挂数据

部署MySQL

1.写docker-compose.yml文件

version: '3'

services:
  mysql:
    image: mysql:latest
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: root #超级管理员密码
      MYSQL_DATABASE: admin     #初始数据库名称
      MYSQL_USER: admin        #数据库用户账号
      MYSQL_PASSWORD: admin    #数据库用户账号
    ports:
      - "3306:3306"
    volumes:
      - ./data:/var/lib/mysql
    restart:  always

2.新增data文件夹,外挂数据

部署Nacos

1.写docker-compose.yml文件

version: '3'

services:
  nacos:
    image: nacos/nacos-server:latest
    container_name: nacos
    restart: always
    ports:
      - "8848:8848"
      - "9848:9848"
      - "9849:9849"
    environment:
      - MODE=standalone #单机模式
      - NACOS_AUTH_ENABLE=true #是否开启鉴权
      - NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789 #密钥需要用Base64加密的得到 如果不知道给什么值可以给旧版本的值(会有安全问题): SecretKey012345678901234567890123456789012345678901234567890123456789
      - NACOS_AUTH_IDENTITY_KEY=identity #自定义键 旧版本默认:serverIdentity,但不要使用旧版本的默认值会有安全问题
      - NACOS_AUTH_IDENTITY_VALUE=security #自定义键值 旧版本默认:security,但不要使用旧版本的默认值会有安全问题
    volumes:
      - ./data:/home/nacos/data
      - ./logs:/home/nacos/logs

2.新增log文件夹以及data文件夹,外挂数据以及日志

部署Portainer

1.写docker-compose.yml文件

version: '3'

services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: always
    ports:
      - "9000:9000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./data:/data

2.新增data文件夹,外挂数据

部署PostgresSql

1.写docker-compose.yml文件

version: '3'

services:
  postgres:
    image: postgres:latest
    container_name: postgres
    restart: always
    environment:
      POSTGRES_USER: admin          # PostgreSQL 用户名
      POSTGRES_PASSWORD: admin  # PostgreSQL 用户密码
      POSTGRES_DB: default        # 默认数据库名
    ports:
      - "5432:5432"                  # 映射端口
    volumes:
      - ./data:/var/lib/postgresql/data  # 数据持久化

2.新增data文件夹,外挂数据

部署RabbitMQ

1.写docker-compose.yml文件

version: '3'
services:
  rabbitmq:
    hostname: rabbitmq
    container_name: rabbitmq
    image: rabbitmq:management
    ports:
      - 15672:15672
      - 5672:5672
    restart: always
    volumes:
      - ./data:/usr/etc/rabbitmq/data

2.新增data文件夹,外挂数据

部署Redis(单机版)

1.写docker-compose.yml文件

version:  '3'
services:
  redis:
    image:  redis:alpine
    container_name:  redis
    ports:
      -  6379:6379
    volumes:
      -  ./data:/data
      - ./config/redis.conf:/usr/local/etc/redis/redis.conf
    command: [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
    restart:  always

2.新增data文件夹,外挂数据以及config文件夹,用于redis配置

3.配置redis.conf

# 配置密码
requirepass admin

部署RocketMQ

1.写docker-compose.yml文件

version: '3'
services:
  rmqnamesrv:
    image: apache/rocketmq:latest
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    restart: always
    privileged: true
    volumes:
      - ./nameserver/logs:/home/rocketmq/logs
      - ./nameserver/bin/runserver.sh:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh
    environment:
      - MAX_HEAP_SIZE=256M
      - HEAP_NEWSIZE=128M
    command: ["sh","mqnamesrv"]
  broker:
    image: apache/rocketmq:latest
    container_name: rmqbroker
    ports:
      - 10909:10909
      - 10911:10911
    restart: always
    privileged: true
    volumes:
      - ./broker/logs:/root/logs
      - ./broker/store:/root/store
      - ./broker/conf/broker.conf:/home/rocketmq/broker.conf
      - ./broker/bin/runbroker.sh:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh
    depends_on:
      - 'rmqnamesrv'
    environment:
      - NAMESRV_ADDR=rmqnamesrv:9876
      - MAX_HEAP_SIZE=512M
      - HEAP_NEWSIZE=256M
    command: ["sh","mqbroker","-c","/home/rocketmq/broker.conf"]
  rmqdashboard:
    image: apacherocketmq/rocketmq-dashboard:latest
    container_name: rocketmq-dashboard
    ports:
      - 8082:8080
    restart: always
    privileged: true
    depends_on:
      - 'rmqnamesrv'
    environment:
      - JAVA_OPTS= -Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false

2.新增broker文件夹以及nameserver文件夹

部署Sonarqube

1.写docker-compose.yml文件

version: '3.7'

services:
  sonarqube:
    image: sonarqube:9.9.6-community
    container_name: sonarqube
    restart:  always
    ports:
      - "9020:9000"
    environment:
      - SONAR_JDBC_URL=jdbc:postgresql://127.0.0.1:5432/sonar #数据库连接
      - SONAR_JDBC_USERNAME=admin #数据库账号
      - SONAR_JDBC_PASSWORD=admin #数据库密码
    volumes:
      - ./data:/opt/sonarqube/data
      - ./extensions:/opt/sonarqube/extensions
      - ./plugins:/opt/sonarqube/lib/bundled-plugins
      - ./logs:/opt/sonarqube/logs
      - ./pdf:/opt/sonarqube/pdf-files

2.新增data文件夹以及extensions文件夹以及logs文件夹以及pdf文件夹以及plugins文件夹

部署Zookeeper(单机版)

1.写docker-compose.yml文件

version: '3.8'

services:
  zookeeper:
    image: zookeeper:latest
    container_name: zookeeper
    ports:
      - "2181:2181"
    volumes:
      - ./data:/data
      - ./logs:/datalog
    restart: always

2.新增log文件夹以及data文件夹,外挂数据以及日志

部署RabbitMQ(延迟队列版本)

1.写docker-compose.yml文件

version: '3'
services:
  rabbitmq:
    hostname: rabbitmq
    container_name: rabbitmq
    build: .
    ports:
      - 15672:15672
      - 5672:5672
    restart: always
    volumes:
      - ./data:/usr/etc/rabbitmq/data

2.新增Dockerfile

# 使用基础镜像 RabbitMQ 管理版
FROM rabbitmq:management

# 添加延迟消息插件到指定目录 可按照此方式自行扩展其他插件
RUN apt-get update && apt-get install -y curl && \
    mkdir -p /plugins && \
    curl -L -o /plugins/rabbitmq_delayed_message_exchange-3.13.0.ez \
    https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v3.13.0/rabbitmq_delayed_message_exchange-3.13.0.ez

# 修改插件目录权限
RUN chmod 644 /plugins/rabbitmq_delayed_message_exchange-3.13.0.ez

# 开启插件
RUN rabbitmq-plugins enable rabbitmq_delayed_message_exchange

ENTRYPOINT ["rabbitmq-server"]

3.新增data文件夹,外挂数据

部署RabbitMQ(延迟队列脚本下载版本)

1.写docker-compose.yml文件

version: '3.8'

services:
  rabbitmq:
    image: rabbitmq:management
    container_name: rabbitmq
    ports:
      - "15672:15672"
      - "5672:5672"
    volumes:
      - ./start-rabbitmq-with-plugin.sh:/usr/local/bin/start-rabbitmq-with-plugin.sh
      - ./data:/usr/etc/rabbitmq/data
    command: ["/bin/bash", "-c", "chmod +x /usr/local/bin/start-rabbitmq-with-plugin.sh && /usr/local/bin/start-rabbitmq-with-plugin.sh"]

2.新增start-rabbitmq-with-plugin.sh执行脚本

#!/bin/bash

# 安装 wget
if ! command -v wget &> /dev/null
then
    echo "wget not found, installing..."
    apt-get update && apt-get install -y wget
    if [ $? -ne 0 ]; then
        echo "Failed to install wget"
        exit 1
    fi
else
    echo "wget is already installed"
fi

# 创建插件目录,如果不存在的话
mkdir -p /plugins

# 下载 RabbitMQ 延迟消息插件
if [ ! -f /plugins/rabbitmq_delayed_message_exchange-3.13.0.ez ]; then
    echo "Downloading rabbitmq_delayed_message_exchange plugin..."
    wget -O /plugins/rabbitmq_delayed_message_exchange-3.13.0.ez \
    https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v3.13.0/rabbitmq_delayed_message_exchange-3.13.0.ez
    if [ $? -ne 0 ]; then
        echo "Failed to download rabbitmq_delayed_message_exchange plugin"
        exit 1
    fi
else
    echo "Plugin already downloaded"
fi

# 修改插件文件权限
echo "Setting permissions for the plugin..."
chmod 644 /plugins/rabbitmq_delayed_message_exchange-3.13.0.ez

# 启用插件
echo "Enabling the plugin..."
rabbitmq-plugins enable rabbitmq_delayed_message_exchange

# 启动 RabbitMQ 服务
echo "Starting RabbitMQ server..."
rabbitmq-server

3.新增data文件夹,外挂数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值