整个部署组件的代码都在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文件夹,外挂数据