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 之后,怎么用 Docker Compose(用一份 YAML 文件同时编排多个容器的工具)把它拉起来,直到浏览器里出现登录页。全程不编译代码,不碰源码。
部署前自检:三件事确认到位
开始之前,把这张清单过一遍,后面 90% 的报错都能提前避开:
docker --version有正常输出,版本至少 20.10.0docker compose version有正常输出,版本至少 v2.1.1- Docker 可用内存 ≥ 6GB、CPU ≥ 4 核、空闲磁盘 ≥ 10GB(Elasticsearch 是内存大户,内存不够它先崩)
- 本机 8585、8080、9200、3306 端口没被其他服务占用
📌 Windows 用户:建议走 WSL2 + Ubuntu 20.04 + Docker Desktop 这条路径。如果之后在 WSL2 里遇到文件权限相关的诡异问题,编辑
/etc/wsl.conf,加入[automount]段落并配置options = "metadata,case=force",然后重启 WSL2。
资源分配在 Docker Desktop 的 Settings → Resources → Advanced 里调:内存拉到 6GB 以上,CPU 4 核以上,保存后 Docker 会自行重启生效。
这张图先放在这里:它画的是 OpenMetadata 内部"数据源 → 连接器 → 上下文图谱 → 消费端"的流转关系,也是你部署完四个容器之后各自在忙什么的一张全景图。
从第一条命令到浏览器看到界面
先选数据库。仓库docker/development/目录下直接躺着你需要的两份编排文件:
| 选项 | 适用场景 | compose 文件 | 启动命令 |
|---|---|---|---|
| MySQL | 求稳、资料最多的默认选项 | docker/development/docker-compose.yml | docker compose -f docker/development/docker-compose.yml up --detach |
| PostgreSQL | 团队技术栈是 PG,想本地和生产一致 | docker/development/docker-compose-postgres.yml | docker compose -f docker/development/docker-compose-postgres.yml up --detach |
两条路径的区别只有两处:PostgreSQL 版本把 MySQL 容器换成openmetadata_postgresql(映射 5432 端口),把 Elasticsearch 换成 OpenSearch。主服务、端口、登录方式完全一样。
先建一个干净的工作目录,把所有东西装进去:
mkdir openmetadata-docker && cd openmetadata-docker这一步纯粹是为了让日志、数据卷(docker-volume/目录会在这里生成)都落在一个固定位置,方便以后清理。
接下来敲下真正的启动命令(MySQL 版)。注意首次运行会从仓库上下文构建 server 和 ingestion 两个镜像,会花几分钟,看到Starting之类的进度不要急着杀进程:
docker compose -f docker/development/docker-compose.yml up --detach跑起来后它按依赖顺序干活:先起 MySQL 和 Elasticsearch 并各自做健康检查,然后execute_migrate_all容器执行一次数据库迁移(对应仓库里的 bootstrap/openmetadata-ops.sh,跑完自动退出,这是正常现象),最后才是主 server 和 ingestion(Airflow)容器。
等一两分钟,用这条命令验证状态:
docker ps你期望看到的是这四行(STATUS列不再是Restarting):
openmetadata_mysql 0.0.0.0:3306->3306/tcp Up (healthy) openmetadata_elasticsearch 0.0.0.0:9200->9200/tcp Up (healthy) openmetadata_server 0.0.0.0:8585->8585/tcp Up (healthy) openmetadata_ingestion 0.0.0.0:8080->8080/tcp Up四个容器分别对应:业务数据库、搜索索引存储、OpenMetadata 主服务、数据摄取服务(Airflow,负责把各数据源的信息吸进来)。如果openmetadata_server一直在Restarting,先别慌,多半是它依赖的前两个还没 healthy,用docker compose -f docker/development/docker-compose.yml logs -f openmetadata_server看日志尾部确认。
现在打开浏览器,访问http://localhost:8585,用默认管理员账号登录:
- 用户名:
admin@open-metadata.org - 密码:
admin
登录后你会看到这个欢迎页,说明主服务已经完整可用。摄取服务的 Airflow 界面在http://localhost:8080,账号密码都是admin,之后配置数据源、跑摄取任务时会用到。
停服与清数据速查
日常折腾只需要下面这几条,都基于同一个 compose 文件(下面以 MySQL 版为例,PG 版把-f后面的路径换掉即可):
| 操作 | 命令 | 一句话说明 |
|---|---|---|
| 暂停所有容器 | docker compose stop | 数据保留,下次docker compose start直接续上 |
| 恢复运行 | docker compose start | 不重建、不拉新镜像,比重新up快 |
| 拆掉容器和网络 | docker compose down | 数据卷还在,删容器不删数据 |
⚠️ 最后这条单独拎出来:docker compose down --volumes会连数据卷一起删掉——数据库、搜索索引全部清空,等于重置。想"回到刚装好的状态"时用它,千万别当成down顺手敲了。
容器没起来怎么排查:两个高频坑
坑一:compose 启动时直接报网络错误
你会看到类似这样的输出:
error creating network: ... already exists / duplicate ID
原因是之前的 compose 项目(可能来自旧目录、旧版本)遗留了同名但已不可用的网络,新的网络创建和它撞车了。修复方式只有一条:
docker network prune它会清掉所有未被容器引用的网络,然后重新执行up命令即可。
坑二:WSL2 下容器起得来但读写权限不对
症状通常是挂载目录里的文件属主混乱、日志里频繁出现permission denied。原因是 WSL2 默认不启用 9P 元数据透传。按前文引用的配置改/etc/wsl.conf:
[automount] options = "metadata,case=force"保存后重启 WSL2(wsl --shutdown再重新进入),重跑up命令验证docker ps四行容器全部恢复Up。
跑通之后:推到生产之前值得做的几件事
本地这套配置是"能跑"而不是"能上"。在你考虑让团队或生产环境接入之前,按优先级做三件事:
- 改掉默认管理员密码(
admin/admin出现在每一份公开文档里) - 给 8585 端口套上 HTTPS,别裸奔
- 收紧注册域名和访问策略,compose 文件里
AUTHORIZER_ALLOWED_DOMAINS这类变量就是留给这一步的,配置样例见 conf/openmetadata.yaml
玩熟之后的路也很直白:在 UI 里加一个数据库服务试试连接器、定义自己的标签体系、配置数据血缘(记录数据"从哪来、到哪去"的链路)、挂上数据质量监控规则——这几件事官方文档里都有专门章节,跟着点过去就行。
下一步建议:打开http://localhost:8585,先给你的本地任意一个 MySQL 库建个 service,看数据被吸进这个界面的感觉。
【免费下载链接】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),仅供参考