Apache DevLake 开发环境 Docker Compose 配置详解
2025-07-10 07:02:20作者:滑思眉Philip
概述
Apache DevLake 是一个开源的数据湖平台,专注于为开发者提供代码分析、项目管理等数据洞察能力。本文将从技术角度深入解析其开发环境使用的 docker-compose-dev.yml 配置文件,帮助开发者理解各服务组件及其配置要点。
核心服务组件
1. 数据库服务
MySQL 服务
mysql:
image: mysql:8
volumes:
- mysql-storage:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: admin
MYSQL_DATABASE: lake
MYSQL_USER: merico
MYSQL_PASSWORD: merico
- 使用 MySQL 8 官方镜像
- 配置了持久化存储卷,确保数据不会因容器重启而丢失
- 预设了 root 密码和普通用户(merico)的数据库访问权限
- 特别配置了字符集为 utf8mb4,支持完整的 Unicode 字符集
- 禁用了二进制日志(skip-log-bin),减少开发环境资源占用
PostgreSQL 服务
postgres:
image: postgres:14.2
environment:
POSTGRES_DB: lake
POSTGRES_USER: merico
POSTGRES_PASSWORD: merico
- 使用 PostgreSQL 14.2 版本
- 同样配置了持久化存储
- 预设了数据库和用户凭证,与 MySQL 配置保持一致性
2. 核心应用服务
DevLake 主服务
devlake:
image: devlake.docker.scarf.sh/apache/devlake:latest
ports:
- 8080:8080
environment:
LOGGING_DIR: /app/logs
- 暴露 8080 端口供外部访问
- 配置了日志目录,便于问题排查
- 依赖 MySQL 服务启动
- 支持通过 .env 文件注入环境变量
配置管理 UI
config-ui:
image: devlake.docker.scarf.sh/apache/devlake-config-ui:latest
ports:
- 4000:4000
environment:
DEVLAKE_ENDPOINT: devlake:8080
GRAFANA_ENDPOINT: grafana:3000
- 提供 4000 端口的 Web 界面
- 需要连接 DevLake 主服务和 Grafana
- 支持管理员用户认证(当前配置中注释掉了)
3. 可视化服务
Grafana 仪表板
grafana:
image: devlake.docker.scarf.sh/apache/devlake-dashboard:latest
ports:
- 3002:3000
environment:
GF_SERVER_ROOT_URL: "http://localhost:4000/grafana"
MYSQL_URL: mysql:3306
- 使用定制化的仪表板镜像
- 映射 3002 端口到容器内 3000 端口
- 预配置了 MySQL 数据源连接
- 设置了默认主题为 light 模式
4. 认证代理(可选)
authproxy:
image: quay.io/oauth2-proxy/oauth2-proxy:v7.4.0-amd64
ports:
- 4180:4180
- 使用 OAuth2 Proxy 提供认证能力
- 当前配置中相关参数被注释,需要时可按需启用
- 支持多种 OIDC 提供商集成
持久化存储配置
volumes:
mysql-storage:
grafana-storage:
postgres-storage:
devlake-log:
- 为各服务配置了独立的存储卷
- 确保数据库、日志和 Grafana 配置持久化
- 避免开发过程中数据丢失
开发环境最佳实践
-
环境隔离:使用独立的 docker-compose 文件可以保持开发环境与生产环境隔离
-
快速重置:需要重置环境时,只需删除对应 volume 即可重新开始
-
性能调优:
- 可根据机器配置调整各服务资源限制
- 开发环境可适当减少 MySQL 内存配置
-
调试技巧:
- 通过挂载本地代码目录可进行实时调试
- 日志目录的配置便于问题追踪
-
安全建议:
- 生产环境务必修改默认密码
- 考虑启用认证代理保护管理界面
常见问题解决
-
端口冲突:如果默认端口已被占用,可修改 ports 映射配置
-
启动顺序问题:depends_on 确保服务依赖关系,但不会等待服务就绪
-
字符集问题:确保 MySQL 使用 utf8mb4 以避免特殊字符存储问题
-
认证配置:如需启用 OAuth,需取消注释并配置相关环境变量
通过理解这份 docker-compose 配置,开发者可以更好地搭建和定制自己的 DevLake 开发环境,为后续的功能开发和调试打下坚实基础。