💻 还在为环境配置头疼吗?
CodeArk(代码方舟) 来拯救你了!
作为一个开发者,你是否经历过:
- ❌ 为了安装 Elasticsearch 浪费一下午
- ❌ MySQL 版本冲突导致项目无法启动
- ❌ 换电脑后要重新配置所有开发环境
- ❌ Windows 上跑不起来 Kafka,macOS 上权限问题频发
现在,让 CodeArk 帮你摆脱这一切!
cd mysql-redis-start-local
docker-compose up -d
# 30秒后,MySQL + Redis 已经运行起来了 🎉✅ 9+ 种常用中间件:MySQL、Redis、Elasticsearch、Kafka、RabbitMQ、RocketMQ、Nacos、MinIO... ✅ 跨平台支持:Windows、macOS、Linux,一套配置处处运行 ✅ 开箱即用:无需掌握 Docker,复制配置文件即可 ✅ 完全隔离:互不干扰,可同时运行多个版本 ✅ 数据持久化:重启不丢失,随时可清理 ✅ 安全可靠:密码与配置分离,支持自定义
🌊 拯救开发者脱离环境配置的苦海,一行命令启航你的开发之旅!
| 服务 | 目录 | 说明 | 管理界面 |
|---|---|---|---|
| 📊 Elasticsearch + Kibana | elastic-start-local/ |
搜索引擎和可视化 | http://localhost:5601 |
| 🗄️ MySQL + Redis | mysql-redis-start-local/ |
关系数据库和缓存 | - |
| 🐰 RabbitMQ | rabbitmq-start-lcoal/ |
消息队列 | http://localhost:15672 |
| 🚀 RocketMQ | rocketmq-start-local/ |
分布式消息队列 | http://localhost:9001 |
| 🔥 Kafka | kafka-start-local/ |
分布式流处理平台 | http://localhost:9000 |
| 🔧 Nacos | nacos-start-local/ |
服务发现和配置中心 | http://localhost:8081/nacos |
| 📦 MinIO | minio-start-local/ |
对象存储(S3 兼容) | http://localhost:9001 |
| 🔴 Redis | redis-start-local/ |
独立内存数据库 | - |
| 🗄️ MySQL | mysql-start-lcoal/ |
独立关系数据库 | - |
- Docker Desktop (Windows/macOS/Linux)
- Docker Compose (Docker Desktop 已自带)
Windows: https://docs.docker.com/desktop/install/windows-install/ macOS: https://docs.docker.com/desktop/install/mac-install/
验证安装:
docker --version
docker-compose --version1️⃣ 克隆项目
git clone https://github.com/StephenQiu30/code-ark.git
cd code-ark2️⃣ 配置环境变量
# 方式一:逐个服务配置
cd mysql-redis-start-local
cp .env.example .env
# 编辑 .env 文件,修改密码等敏感信息
# 方式二:批量处理(macOS/Linux)
find . -name ".env.example" -exec sh -c 'cp "$1" "${1%.example}"' _ {} \;3️⃣ 启动服务
cd mysql-redis-start-local
docker-compose up -d🎉 完成! 你的开发环境已经运行起来了!
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
# 停止服务并删除数据卷(谨慎使用)
docker-compose down -v
# 重启服务
docker-compose restart功能: 全文搜索引擎和可视化分析平台
默认端口:
- Elasticsearch:
http://localhost:9200 - Kibana:
http://localhost:5601
默认账号:
- 用户名:
elastic - 密码: 见
.env中的ES_LOCAL_PASSWORD
启动:
cd elastic-start-local
docker-compose up -d使用说明:
- 等待约 1-2 分钟,Elasticsearch 健康检查通过
- 访问 Kibana:
http://localhost:5601 - 使用
elastic账号登录
功能: 关系型数据库和内存数据库
默认端口:
- MySQL:
localhost:3306 - Redis:
localhost:6379
默认配置:
# MySQL
用户名: root (见 .env)
密码: 见 .env 中的 MYSQL_ROOT_PASSWORD
数据库: test_db
额外用户: user (见 .env)
密码: 见 .env 中的 MYSQL_PASSWORD
# Redis
无密码(如需密码请修改 docker-compose.yml)启动:
cd mysql-redis-start-local
docker-compose up -d连接示例:
# MySQL 连接
mysql -h 127.0.0.1 -u root -p
# Redis 连接
redis-cli功能: 消息队列服务
默认端口:
- AMQP:
localhost:5672 - 管理界面:
http://localhost:15672
默认账号:
- 用户名: 见
.env中的RABBITMQ_DEFAULT_USER - 密码: 见
.env中的RABBITMQ_DEFAULT_PASS
启动:
cd rabbitmq-start-lcoal
docker-compose up -d使用说明:
访问管理界面 http://localhost:15672,使用 .env 中配置的账号登录。
功能: 分布式消息队列(阿里开源)
默认端口:
- NameServer:
9876 - Broker:
10909,10911,10912 - Dashboard:
http://localhost:9001
启动:
cd rocketmq-start-local
docker-compose up -d使用说明:
访问 Dashboard http://localhost:9001 查看消息队列状态。
功能: 分布式流处理平台
默认端口:
- Kafka:
localhost:9092 - Kafka UI:
http://localhost:9000
启动:
cd kafka-start-local
docker-compose up -d使用说明:
访问 Kafka UI http://localhost:9000 管理主题和消费者组。
功能: 服务发现和配置中心(Spring Cloud Alibaba)
默认端口:
- 控制台:
http://localhost:8081/nacos(主要访问入口) - 主端口:
8848 - gRPC:
9848,9849 - Jraft:
9850
默认账号:
- 用户名:
nacos - 密码:
nacos
启动:
cd nacos-start-local
docker-compose up -d使用说明:
访问控制台 http://localhost:8081/nacos,默认账号密码均为 nacos。
认证密钥: 需在 .env 中配置 NACOS_AUTH_TOKEN(用于服务间认证)
功能: 对象存储服务(兼容 S3 API)
默认端口:
- API:
localhost:9000 - 控制台:
http://localhost:9001
默认账号:
- 用户名: 见
.env中的MINIO_ROOT_USER - 密码: 见
.env中的MINIO_ROOT_PASSWORD
启动:
cd minio-start-local
docker-compose up -d使用说明:
访问控制台 http://localhost:9001,创建 Bucket 进行文件存储。
功能: 独立的 Redis 服务
默认端口: localhost:6379
启动:
cd redis-start-local
docker-compose up -d使用说明:
redis-cli问题: 启动时提示端口已被使用
Error: port is already allocated解决方案:
Windows (PowerShell):
# 查看端口占用
netstat -ano | findstr :3306
# 结束进程(替换 PID)
taskkill /PID <进程ID> /FmacOS/Linux:
# 查看端口占用
lsof -i :3306
# 结束进程
kill -9 <PID>或者修改 .env 文件中的端口号:
# 例如将 MySQL 端口改为 3307
MYSQL_PORT=3307问题: 容器删除后数据丢失
说明: 本项目所有服务都已配置数据卷挂载,数据会保存在各服务目录的 data/ 或 *-data/ 目录中。
删除数据:
# 停止服务并删除数据卷
docker-compose down -v
# 手动删除数据目录
rm -rf ./data问题: Elasticsearch 等服务启动失败,提示内存不足
解决方案: 修改 Docker Desktop 内存分配
- macOS: Docker Desktop > Settings > Resources > Memory (建议 4GB+)
- Windows: Docker Desktop > Settings > Resources > WSL Integration > Memory
或者调整 .env 中的 JVM 参数:
ES_LOCAL_JAVA_OPTS="-Xms512m -Xmx1g"调试步骤:
# 查看容器日志
docker-compose logs
# 查看特定服务日志
docker-compose logs mysql
# 查看容器状态
docker-compose ps
# 重新构建并启动
docker-compose up -d --force-recreate某些服务(如 Elasticsearch)在 macOS 上可能需要额外配置:
# 确保 Docker Desktop 有足够的文件描述符限制
ulimit -n 65536如果遇到文件路径问题,确保:
- 使用 WSL 2 后端
- 项目路径不在
C:\Windows\System32等系统目录 - 文件路径不包含中文和特殊字符
每个服务的 docker-compose.yml 都可以根据需求修改:
# 修改端口映射
ports:
- "3307:3306" # 宿主机端口:容器端口
# 修改环境变量
environment:
- MYSQL_DATABASE=my_custom_db
# 挂载自定义配置文件
volumes:
- ./my.cnf:/etc/mysql/conf.d/custom.cnf# 在不同目录启动不同版本
cd mysql-redis-start-local
docker-compose up -d
cd ../mysql-start-lcoal
docker-compose up -d在 docker-compose.yml 中已配置 restart: always,Docker Desktop 启动时会自动启动容器。
不同服务之间可以通过容器名互相访问:
# 在 app 服务中连接 MySQL
environment:
- DB_HOST=mysql # 使用容器名而非 localhost
- DB_PORT=3306- 生产环境:务必修改
.env中的默认密码 - 密码强度:使用强密码,包含大小写字母、数字和特殊字符
- 密钥生成:对于
NACOS_AUTH_TOKEN等密钥,使用安全随机字符串
生成安全密钥:
# macOS/Linux
openssl rand -base64 32
# 或使用在线工具
# https://generate-random.org/encryption-key-generator为防止服务占用过多资源,可以在 docker-compose.yml 中添加限制:
services:
mysql:
deploy:
resources:
limits:
cpus: '1'
memory: 1G
reservations:
cpus: '0.5'
memory: 512M定期备份持久化数据:
# MySQL 备份示例
docker-compose exec mysql mysqldump -u root -p test_db > backup.sql
# Redis 备份示例
cp redis-data/dump.rdb redis-data/dump.rdb.backup防止日志文件无限增长:
services:
mysql:
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"CodeArk/
├── .gitignore # Git 忽略规则
├── README.md # 本文件
├── elastic-start-local/ # Elasticsearch + Kibana
│ ├── docker-compose.yml
│ ├── .env # 敏感配置(不提交)
│ ├── .env.example # 配置模板
│ └── config/
│ └── telemetry.yml
├── mysql-redis-start-local/ # MySQL + Redis
│ ├── docker-compose.yml
│ ├── .env
│ ├── .env.example
│ ├── mysql-data/ # 数据持久化
│ └── redis-data/
├── minio-start-local/ # MinIO
├── nacos-start-local/ # Nacos
├── rabbitmq-start-lcoal/ # RabbitMQ
├── redis-start-local/ # Redis
├── rocketmq-start-local/ # RocketMQ
└── kafka-start-local/ # Kafka
欢迎贡献更多服务的 Docker Compose 配置!
- Fork 本项目
- 创建新的服务目录 (
git checkout -b feature/AmazingService) - 编写
docker-compose.yml和.env.example - 更新 README 添加服务说明
- 提交 Pull Request
贡献规范:
- 每个服务应包含
docker-compose.yml和.env.example .env.example中敏感信息使用占位符(如your_password_here)- README 中添加服务说明,包括端口、账号、使用方法
- 遵循现有的目录命名规范
本项目采用 MIT License 开源协议。
CodeArk (代码方舟) 的寓意:
- 🚢 方舟:承载所有开发所需的工具和环境
- 🌊 拯救:将开发者从环境配置的苦海中解救出来
- ⚡ 即用:靠岸即用,一行命令启航
- 🌍 普世:跨平台,处处运行
如果这个项目对你有帮助,请给一个 ⭐ Star 支持一下!
- 邮箱: Popcornqhd@gmail.com
- GitHub Issues: 提交问题
- Pull Requests: 欢迎提交 PR
Made with ❤️ by StephenQiu30
拯救开发者脱离环境配置的苦海 🌊