Java开发常用中间件,Docker安装。

一、数据库

MySQL 5.7

bash 复制代码
# 拉取
docker pull mysql:5.7

# 启动
docker run -d --name mysql57 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=testdb -v mysql57_data:/var/lib/mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

MySQL 8.0

bash 复制代码
# 拉取
docker pull mysql:8.0

# 启动
docker run -d --name mysql80 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=testdb -v mysql80_data:/var/lib/mysql mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

Redis 7.2

bash 复制代码
# 拉取
docker pull redis:7.2

# 启动
docker run -d --name redis72 -p 6379:6379 -v redis72_data:/data redis:7.2 redis-server --appendonly yes --requirepass 123456

Elasticsearch 8.12.0

bash 复制代码
# 拉取
docker pull elasticsearch:8.12.0

# 创建网络并启动
docker network create elk-network && docker run -d --name elasticsearch --network elk-network -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "xpack.security.enabled=false" -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -v es_data:/usr/share/elasticsearch/data elasticsearch:8.12.0

Kibana 8.12.0

bash 复制代码
# 拉取
docker pull kibana:8.12.0

# 启动
docker run -d --name kibana --network elk-network -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 kibana:8.12.0

二、消息队列

RabbitMQ 3.13 (带管理界面)

bash 复制代码
# 拉取
docker pull rabbitmq:3.13-management

# 启动
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin123 -v rabbitmq_data:/var/lib/rabbitmq rabbitmq:3.13-management

RocketMQ 5.3.0 + Dashboard

bash 复制代码
# 拉取
docker pull apache/rocketmq:5.3.0
docker pull apacherocketmq/rocketmq-dashboard:latest

# 启动 NameServer
docker run -d --name rocketmq-namesrv -p 9876:9876 -e "JAVA_OPT_EXT=-Xms256m -Xmx256m" apache/rocketmq:5.3.0 sh mqnamesrv

# 启动 Broker
docker run -d --name rocketmq-broker -p 10911:10911 -p 10909:10909 -e "NAMESRV_ADDR=localhost:9876" -e "JAVA_OPT_EXT=-Xms512m -Xmx512m -Xmn256m" -e "BROKER_IP1=127.0.0.1" -v rocketmq_broker:/home/rocketmq/store apache/rocketmq:5.3.0 sh mqbroker -c /home/rocketmq/rocketmq-5.3.0/conf/broker.conf

# 启动 Dashboard
docker run -d --name rocketmq-dashboard -p 8088:8080 -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876" apacherocketmq/rocketmq-dashboard:latest

Kafka (Bitnami版本)

bash 复制代码
# 拉取
docker pull bitnami/kafka:3.7

# 启动 ZooKeeper
docker run -d --name zookeeper -p 2181:2181 -e ALLOW_ANONYMOUS_LOGIN=yes bitnami/zookeeper:latest

# 启动 Kafka
docker run -d --name kafka -p 9092:9092 -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 -e ALLOW_PLAINTEXT_LISTENER=yes -v kafka_data:/bitnami/kafka bitnami/kafka:3.7

ActiveMQ 5.18.3

bash 复制代码
# 拉取
docker pull apache/activemq:5.18.3

# 启动
docker run -d --name activemq -p 61616:61616 -p 8161:8161 -e ACTIVEMQ_ADMIN_LOGIN=admin -e ACTIVEMQ_ADMIN_PASSWORD=admin123 -v activemq_data:/data apache/activemq:5.18.3

三、微服务核心

Nacos Server 2.3.0

bash 复制代码
# 拉取
docker pull nacos/nacos-server:v2.3.0

# 启动
docker run -d --name nacos -p 8848:8848 -p 9848:9848 -e MODE=standalone -e JVM_XMS=256m -e JVM_XMX=256m -v nacos_data:/home/nacos/data nacos/nacos-server:v2.3.0

docker run -d --name nacos -p 8848:8848 -p 9848:9849 -p 9849:9849 -e MODE=standalone -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=host.docker.internal -e MYSQL_SERVICE_PORT=3306 -e MYSQL_SERVICE_DB_NAME=ry-config -e MYSQL_SERVICE_USER=root -e MYSQL_SERVICE_PASSWORD=123456 --restart=always nacos/nacos-server:v2.3.0

Sentinel Dashboard

bash 复制代码
# 拉取
docker pull bladex/sentinel-dashboard:latest

# 启动
docker run -d --name sentinel -p 8080:8080 -e SERVER_PORT=8080 bladex/sentinel-dashboard:latest

四、文件存储

MinIO

bash 复制代码
# 拉取
docker pull minio/minio:latest

# 启动
docker run -d --name minio -p 9000:9000 -p 9001:9001 -e MINIO_ROOT_USER=admin -e MINIO_ROOT_PASSWORD=admin123456 -v minio_data:/data minio/minio:latest server /data --console-address ":9001"

Nginx (Alpine)

bash 复制代码
# 拉取
docker pull nginx:alpine

# 启动
docker run -d --name nginx -p 80:80 -p 443:443 -v nginx_html:/usr/share/nginx/html -v nginx_conf:/etc/nginx/conf.d nginx:alpine

五、监控

Prometheus

bash 复制代码
# 拉取
docker pull prom/prometheus:latest

# 创建配置文件并启动
mkdir -p /tmp/prometheus && cat > /tmp/prometheus/prometheus.yml <<EOF && docker run -d --name prometheus -p 9090:9090 -v /tmp/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v prometheus_data:/prometheus prom/prometheus:latest
global:
  scrape_interval: 15s
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
EOF

Grafana

bash 复制代码
# 拉取
docker pull grafana/grafana:latest

# 启动
docker run -d --name grafana -p 3000:3000 -e GF_SECURITY_ADMIN_PASSWORD=admin123 -v grafana_data:/var/lib/grafana grafana/grafana:latest

六、一键执行脚本(拉取 + 启动)

bash 复制代码
#!/bin/bash

# 拉取所有镜像
echo "开始拉取镜像..."
docker pull mysql:5.7
docker pull redis:7.2
docker pull rabbitmq:3.13-management
docker pull nacos/nacos-server:v2.3.0
docker pull minio/minio:latest
docker pull grafana/grafana:latest

# 启动所有容器
echo "开始启动容器..."
docker run -d --name mysql57 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v mysql57_data:/var/lib/mysql mysql:5.7 --character-set-server=utf8mb4
docker run -d --name redis72 -p 6379:6379 -v redis72_data:/data redis:7.2 redis-server --appendonly yes --requirepass 123456
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin123 -v rabbitmq_data:/var/lib/rabbitmq rabbitmq:3.13-management
docker run -d --name nacos -p 8848:8848 -p 9848:9848 -e MODE=standalone -v nacos_data:/home/nacos/data nacos/nacos-server:v2.3.0
docker run -d --name minio -p 9000:9000 -p 9001:9001 -e MINIO_ROOT_USER=admin -e MINIO_ROOT_PASSWORD=admin123456 -v minio_data:/data minio/minio:latest server /data --console-address ":9001"
docker run -d --name grafana -p 3000:3000 -e GF_SECURITY_ADMIN_PASSWORD=admin123 -v grafana_data:/var/lib/grafana grafana/grafana:latest

echo "所有镜像拉取并启动完成!"

每个服务都包含了独立的拉取和启动命令,可以直接复制使用。

相关推荐
ps酷教程29 分钟前
Jackson 解决没有无参构造函数的反序列化问题
java
NiceCloud喜云34 分钟前
Opus 4.8 的 Effort Control 怎么选:Low 到 Max 五档策略
android·java·大数据·前端·c++·python·spring
专业白嫖怪1 小时前
什么是docker
运维·docker·容器
_日拱一卒2 小时前
LeetCode:994腐烂的橘子
java·数据结构·算法·leetcode·深度优先
隔窗听雨眠2 小时前
Nginx网关响应慢排查手记
java·服务器·nginx
智慧物业老杨2 小时前
智慧物业合同周期管理系统:从风险预警到智能交接的全流程数智化落地方案
java·人工智能·python
源码宝2 小时前
MES系统源码:Java8 + SpringBoot2.7 + MySQL8 + Redis,后端源码清爽易扩展
java·后端·源码·springboot·mes系统·源码二开·mes源码
JAVA社区3 小时前
Java高级全套教程(十)—— SpringCloudAlibaba超详细实战详解
java·开发语言·spring cloud·面试·职场和发展
金銀銅鐵3 小时前
[Java] 如何理解 class 文件中方法的 descriptor?
java·后端
云烟成雨TD3 小时前
Spring AI Alibaba 1.x 系列【63】AI Agent 长期记忆
java·人工智能·spring