首页
/ Apache DevLake 开发环境 Docker Compose 配置详解

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 配置持久化
  • 避免开发过程中数据丢失

开发环境最佳实践

  1. 环境隔离:使用独立的 docker-compose 文件可以保持开发环境与生产环境隔离

  2. 快速重置:需要重置环境时,只需删除对应 volume 即可重新开始

  3. 性能调优

    • 可根据机器配置调整各服务资源限制
    • 开发环境可适当减少 MySQL 内存配置
  4. 调试技巧

    • 通过挂载本地代码目录可进行实时调试
    • 日志目录的配置便于问题追踪
  5. 安全建议

    • 生产环境务必修改默认密码
    • 考虑启用认证代理保护管理界面

常见问题解决

  1. 端口冲突:如果默认端口已被占用,可修改 ports 映射配置

  2. 启动顺序问题:depends_on 确保服务依赖关系,但不会等待服务就绪

  3. 字符集问题:确保 MySQL 使用 utf8mb4 以避免特殊字符存储问题

  4. 认证配置:如需启用 OAuth,需取消注释并配置相关环境变量

通过理解这份 docker-compose 配置,开发者可以更好地搭建和定制自己的 DevLake 开发环境,为后续的功能开发和调试打下坚实基础。