各个compose
Elasticsearch
version: '3.8'
services:
elasticsearch:
image: docker.1ms.run/library/elasticsearch:8.19.5
container_name: es01
environment:
- node.name=es01
- cluster.name=es-cluster
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms2g -Xmx2g" # 建议至少 2G
- xpack.security.enabled=false # 彻底禁用安全认证
- xpack.security.http.ssl.enabled=false
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- es-data:/usr/share/elasticsearch/data
- /dpanel/compose/es/plugins/ik:/usr/share/elasticsearch/plugins/ik
ports:
- "9200:9200"
- "9300:9300"
kibana:
image: docker.1ms.run/library/kibana:8.19.5
container_name: kibana01
depends_on:
- elasticsearch
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200 # 不需要用户名密码
ports:
- "5601:5601"
volumes:
es-data:
Jenkins
services:
jenkins:
# 镜像地址(直接使用你提供的华为云 SWR 地址)
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/jenkins/jenkins:lts-jdk21
container_name: jenkins-jdk21 # 容器名称,便于管理
restart: always # 容器退出时自动重启(故障自愈)
privileged: true # 授予特权(解决宿主机文件挂载权限问题)
user: root # 使用 root 用户运行(避免 Jenkins 内部权限不足)
ports:
- "8009:8080" # Web 访问端口(宿主机:容器)
- "50000:50000" # 代理节点通信端口(Jenkins 主从架构必备)
environment:
- TZ=Asia/Shanghai # 时区同步(避免日志/构建时间混乱)
- JAVA_OPTS=-Xms512m
- JAVA_OPTS=-Xmx1024m
volumes:
# 挂载宿主机 Docker 客户端(允许 Jenkins 内部构建 Docker 镜像)
- /var/run/docker.sock:/var/run/docker.sock
networks:
- jenkins_network # 独立网络,隔离其他服务
# 自定义网络(推荐,避免端口冲突和网络混乱)
networks:
jenkins_network:
driver: bridge
nacos
version: "2" # 版本2兼容所有Docker Compose环境,无需修改
services:
nacos:
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nacos/nacos-server:v2.5.1
container_name: nacos-standalone
environment:
- PREFER_HOST_MODE=hostname # 原有配置:优先使用主机名(无需改)
- MODE=standalone # 原有配置:单机模式(核心,必须保留)
- NACOS_AUTH_ENABLE=true # 原有配置:启用认证(必须保留)
- NACOS_AUTH_IDENTITY_KEY=serverIdentity # 原有认证密钥(无需改)
- NACOS_AUTH_IDENTITY_VALUE=security # 原有认证值(无需改)
- NACOS_AUTH_TOKEN=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg= # 原有认证Token(无需改)
# 新增:降低JVM内存(解决Exited 137问题,适配多服务共存场景)
- JVM_XMS=256m # 初始堆内存:256MB(轻量,避免内存不足)
- JVM_XMX=256m # 最大堆内存:256MB(与初始一致,避免内存波动)
- JVM_XMN=128m # 年轻代内存:128MB(堆内存的1/2,性能最优)
volumes:
- ./standalone-data/:/home/nacos/data
- ./standalone-logs/:/home/nacos/logs # 原有配置:日志挂载(便于排查问题,保留)
ports:
- "8848:8848" # 原有配置:Nacos核心端口(访问用,必须保留)
- "9848:9848" # 原有配置:Nacos客户端通信端口(微服务连接用,保留)
rabbitmq
version: '3.8'
services:
rabbitmq:
image: rabbitmq:3-management
container_name: rabbitmq
restart: always
ports:
- "5672:5672" # RabbitMQ 消息端口
- "15672:15672" # Web 管理界面端口
environment:
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest
volumes:
- ./data/rabbitmq:/var/lib/rabbitmq
rocketmq
version: '3.8'
services:
rocketmq-namesrv:
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apache/rocketmq:5.3.3
container_name: rocketmq-namesrv
restart: always
ports:
- "9876:9876"
environment:
# ⚠️ 调整 NameServer 内存到 512m
- JAVA_OPT_EXT=-Xms512m -Xmx512m
command: sh mqnamesrv
rocketmq-broker:
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apache/rocketmq:5.3.3
container_name: rocketmq-broker
restart: always
ports:
- "10909:10909"
- "10911:10911"
- "10912:10912"
environment:
- JAVA_OPT_EXT=-Xms512m -Xmx512m -Xmn256m
- NAMESRV_ADDR=rocketmq-namesrv:9876
- BROKER_IP1=115.190.229.116
- BROKER_CLUSTER_NAME=DefaultCluster
- BROKER_NAME=broker-a
ulimits: # 👈 建议也为 Broker 增加文件描述符限制
nofile:
soft: 65535
hard: 65535
volumes:
- ./broker.conf:/home/rocketmq/rocketmq-5.3.3/conf/broker.conf
depends_on:
- rocketmq-namesrv
command: sh mqbroker -c /home/rocketmq/rocketmq-5.3.3/conf/broker.conf
rocketmq-dashboard:
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apacherocketmq/rocketmq-dashboard:latest
container_name: rocketmq-dashboard
restart: always
ports:
- "8080:8080"
environment:
- NAMESRV_ADDR=rocketmq-namesrv:9876
# 🚀 解决内存不足:设置 Dashboard 的 JVM 堆内存
- JAVA_OPTS=-Xmx512m -Xms512m
ulimits:
# 🚀 解决文件描述符不足:设置容器的文件描述符上限
nofile:
soft: 65535
hard: 65535
depends_on:
- rocketmq-namesrv
- rocketmq-broker
broker.conf
# broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# 监听端口配置
listenPort = 10911
brokerIP1=115.190.229.116
# 名称服务器地址
namesrvAddr=rocketmq-namesrv:9876
# 存储路径
storePathRootDir=/home/rocketmq/store
storePathCommitLog=/home/rocketmq/store/commitlog
storePathConsumeQueue=/home/rocketmq/store/consumequeue
storePathIndex=/home/rocketmq/store/index
# 内存映射配置
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=300000
# 消息大小限制
maxMessageSize=65536
# 自动创建主题
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
rustfs
services:
rustfs:
image: rustfs/rustfs:latest
container_name: rustfs-server
security_opt:
- "no-new-privileges:true"
ports:
- "9000:9000" # S3 API 对外端口
- "9001:9001" # 控制台对外端口
environment:
- RUSTFS_VOLUMES=/data/rustfs0 # 数据卷(多个路径用逗号分隔)
- RUSTFS_ADDRESS=0.0.0.0:9000 # API 监听地址
- RUSTFS_CONSOLE_ADDRESS=0.0.0.0:9001 # 控制台监听地址
- RUSTFS_CONSOLE_ENABLE=true # 启用控制台
- RUSTFS_CORS_ALLOWED_ORIGINS=* # API CORS 允许所有来源(生产环境建议限制具体域名)
- RUSTFS_CONSOLE_CORS_ALLOWED_ORIGINS=* # 控制台 CORS 允许所有来源
- RUSTFS_ACCESS_KEY=rustfsadmin # 访问密钥(生产环境务必修改为强密码!)
- RUSTFS_SECRET_KEY=rustfsadmin # 密钥(生产环境修改!)
- RUSTFS_LOG_LEVEL=info # 日志级别
volumes:
- ./deploy/data/pro:/data # 数据存储目录(宿主机路径可自定义,确保有读写权限)
- ./deploy/logs:/app/logs # 日志目录
# 删掉 networks 配置(自动加入 default 网络)
restart: unless-stopped
healthcheck:
test: ["CMD", "sh", "-c", "curl -f http://localhost:9000/health || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
privileged: false # 禁用特权模式(增强安全性)
xxljob
version: '3.8'
services:
xxl-job-admin:
image: xxljob:v1 # 你的本地镜像
container_name: xxl-job
restart: always
ports:
- "8888:8888" # 主机8888端口映射容器8080端口(容器内端口若修改需同步调整)
environment:
# 核心数据库配置(替换为你的实际 MySQL 信息)
- SPRING_DATASOURCE_URL=jdbc:mysql://115.190.229.116:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
- SPRING_DATASOURCE_USERNAME=root # 如 root(必填)
- SPRING_DATASOURCE_PASSWORD=jiang2004526 # 如 123456(必填)
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver # MySQL 8.0+ 驱动
# 可选:XXL-Job 访问令牌(生产环境建议设置)
- XXL_JOB_ACCESS_TOKEN= # 为空则关闭,需开启则填写自定义令牌
volumes:
- ./xxl-job-logs:/data/applogs # 持久化 XXL-Job 日志(可选,便于排查问题)