20 分钟本地跑通 OpenMetadata:Docker 部署快速上手指南
【免费下载链接】OpenMetadataThe Open Context Layer for Data and AI , OpenMetadata is the open platform for building trusted data context and business semantics for humans, AI assistants, and agents.项目地址: https://gitcode.com/GitHub_Trending/op/OpenMetadata
想在自己的机器上先跑一个 OpenMetadata(开源元数据管理平台)试试?或者需要给学习者发一套现成的「元数据目录 + 数据血缘」练习环境?用 Docker Compose 做本地部署是最短路径:一条命令拉起服务端、摄取服务和搜索、数据库,浏览器里直接登录控制台。
整个栈一共 4 个常驻容器:OpenMetadata Server(主服务)、Ingestion(基于 Airflow 的数据摄取)、Elasticsearch/OpenSearch(全文检索)、MySQL 或 PostgreSQL(元数据存储)。本文只讲一件事:怎么在你本机上把它跑起来,并确认它真的跑起来了。
开工前 30 秒自检
先把下面这张表过一遍,全部打勾再动手,能省掉 80% 的排查时间。
| 自检项 | 达标标准 | 怎么确认 |
|---|---|---|
| - [ ] Docker | 版本 ≥ 20.10 | 终端执行docker --version |
| - [ ] Docker Compose(V2) | 版本 ≥ v2.1.1 | docker compose version |
| - [ ] 内存 | ≥ 6GB(建议 8GB) | Docker Desktop → Settings → Resources;macOS/Linux 看宿主机空闲内存 |
| - [ ] CPU / 磁盘 | ≥ 4 核 / ≥ 10GB 可用 | 同上 |
| - [ ] 端口空闲 | 8585、8080、3306、9200 未被占用 | netstat -an \| grep 8585(macOS/Linux) |
| - [ ] 仓库已克隆 | 本地有一份完整源码 | 见下一步第 1 步 |
⚠️ 资源不够时最先被拖垮的是 Elasticsearch 和 Airflow,启动会卡在健康检查上。
3 步启动整套服务
先给最短路径,数据库选型、Windows 差异放到后面「可选方案」里再说。
第 1 步:拿到代码(Compose 文件就在仓库里,不用另找下载地址)
克隆仓库,进入放 Compose 文件的目录 docker/development/:
git clone https://gitcode.com/GitHub_Trending/op/OpenMetadata cd OpenMetadata/docker/development第 2 步:一条命令后台启动全部容器
默认走 MySQL 版编排文件 docker/development/docker-compose.yml,首次运行会拉取并构建镜像,需要几分钟,属于正常现象:
docker compose -f docker-compose.yml up -d第 3 步:打开浏览器
等服务就绪后访问http://localhost:8585,用默认账号登录即可,账号信息见下一节。
可选方案
想换 PostgreSQL?换一份编排文件即可,它把 MySQL 换成 PostgreSQL、Elasticsearch 换成 OpenSearch,其余流程完全一致:
docker compose -f docker-compose-postgres.yml up -d对应文件是 docker/development/docker-compose-postgres.yml,此时宿主机占用的是 5432 而非 3306。
Windows 用户?走 WSL2 后端(Microsoft Store 安装 Ubuntu 20.04 + Docker Desktop for Windows)。若文件挂载报权限错误,编辑/etc/wsl.conf追加:
[automount] options = "metadata,case=force"想改端口、日志级别?都在编排文件的环境变量里(如SERVER_PORT),服务端配置模板见 conf/openmetadata.yaml。
确认部署成功
跑通后的「成功样子」长这样,按顺序核对:
- 容器状态:执行
docker ps,应看到 4 个Up状态的容器(openmetadata_server、openmetadata_ingestion、搜索服务、数据库),其中execute_migrate_all是一次性迁移任务,跑完自动退出属正常。 - 健康检查:服务端健康端点在管理端口 8586:
curl -s -o /dev/null -w "%{http_code}" http://localhost:8586/healthcheck返回200即服务就绪。 3. 页面:打开http://localhost:8585,输入默认账号,看到控制台首页就说明本地部署成功:
默认账号信息,两个控制台都记一下:
| 控制台 | 地址 | 用户名 | 密码 |
|---|---|---|---|
| OpenMetadata UI | http://localhost:8585 | admin@open-metadata.org | admin |
| Airflow UI(摄取调度) | http://localhost:8080 | admin | admin |
日常操作速查
以后基本只用得到下面这张表,不用再翻文档:
| 操作 | 命令 | 说明 |
|---|---|---|
| 查看运行状态 | docker ps | 确认 4 个容器都在Up |
| 停服(保留数据) | docker compose stop | 容器停止,卷和网络保留 |
| 重新拉起 | docker compose start | 接着上次的数据继续跑 |
| 停止并删除容器 | docker compose down | 数据卷保留,可再次 up |
| 彻底清理(含数据) | docker compose down -v | ⚠️ 元数据不可恢复,慎用 |
| 排查服务日志 | docker compose logs -f openmetadata-server | 启动卡住时先看它 |
| 清理残留网络 | docker network prune | 网络冲突报错后的第一动作 |
踩坑急救包
| 症状 | 可能原因 | 解决办法 |
|---|---|---|
up时报端口绑定失败(如 8585 / 3306 already in use) | 本机其他应用占用了端口 | 关掉占用程序,或在编排文件中把ports左侧宿主机端口改掉 |
| 报网络创建/冲突错误 | 上次down未清干净,残留同名网络 | 执行docker network prune后重新up |
| 容器反复重启,Elasticsearch 健康检查不通过 | 分配给 Docker 的内存不足 | 把 Docker 可用内存调到 ≥ 6GB,或临时关闭其他吃内存的容器 |
| 页面一直转圈、登录无响应 | 数据库迁移任务execute-migrate-all还没跑完 | 等它完成(状态Exited (0)),再用curl http://localhost:8586/healthcheck复验 |
| WSL2 下挂载卷权限报错 | automount 未开启元数据支持 | 按「可选方案」中配置/etc/wsl.conf并重启 WSL |
生产化提醒与下一步
本地环境跑通只是起点。如果哪天要对外提供服务,先做这 4 件事:改掉admin默认密码、启用 HTTPS、收紧访问控制(防火墙/白名单)、不要把 3306、9200 这类内部端口暴露到公网。
接着可以按这个顺序玩起来:
- 在 UI 里添加第一个数据库连接,跑一次元数据摄取(现成配置可参考 ingestion/examples/sample_configs/)
- 配置数据质量规则,给核心表加上新鲜度和空值检查
- 打开表详情页,追一遍列级血缘
- 用 Python SDK 把元数据查询写进自己的脚本,示例在 examples/python-sdk/
【免费下载链接】OpenMetadataThe Open Context Layer for Data and AI , OpenMetadata is the open platform for building trusted data context and business semantics for humans, AI assistants, and agents.项目地址: https://gitcode.com/GitHub_Trending/op/OpenMetadata
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考