Skip to content

Docker Composeでmadoを起動する ​

まずソースから開発環境を起動して、ブラウザで操作を確認できます。必要なものはGit、Docker、Docker Compose v2です。

DockerとGitを用意する ​

macOS ​

Homebrewがある場合は、ターミナルで実行します。

bash
brew install git
brew install --cask docker
open -a Docker

Docker Desktopの初回画面でセットアップを済ませ、起動完了を待ちます。HomebrewがなければHomebrewの導入手順から準備してください。Docker Desktopの要件は公式のmacOS向け手順で確認できます。

Ubuntuで手元の開発環境を作る ​

Gitとcurlを入れ、Docker公式の開発用インストールスクリプトを使います。

bash
sudo apt-get update
sudo apt-get install -y git curl
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

以降のDockerコマンドに権限がなければ sudo を付けて実行してください。本番マシンのDocker導入には、公式のaptリポジトリによる手順を使います。

インストールを確認する ​

bash
git --version
docker version
docker compose version

docker version でServerも表示されることを確認します。

ソースと設定ファイルを用意する ​

bash
git clone https://github.com/aida0710/mado-s3-datacatalog.git
cd mado-s3-datacatalog
cp .env.example .env
openssl rand -hex 32

最後のコマンドで生成した値を、.env の ENCRYPTION_KEY に設定します。このキーは保存したS3の認証情報の暗号化に使うため、運用開始後も保管してください。

.env.example の AUTH_MODE=local は、Local Userで試す設定です。DataLineageを使う場合は、互換Dataset RegistryとそのBearer token、必要に応じてMarquezを別途用意します。Registryの仕様はAPI契約を参照してください。

開発環境を起動する ​

bash
docker compose -f compose.dev.yaml up -d --build postgres api-internal media-worker front
docker compose -f compose.dev.yaml ps

まずStorageを使うサービスを起動します。PostgreSQLがhealthyになったら、初期Adminを作成します。OpenLineageの受け付けは、Registryへの接続設定を済ませてから docker compose -f compose.dev.yaml up -d --build api-lineage で起動できます。

初期Adminを作成する ​

bash
docker compose -f compose.dev.yaml exec api-internal \
  npm run auth:bootstrap-admin:dev -- --username admin

New admin password: に初回用パスワードを入力し、Confirm password: に同じ値を入れます。初回用は8バイト以上です。初回ログイン後は12バイト以上のパスワードに変更します。英数字は1文字1バイト、日本語の多くの文字は1文字3バイトで数えます。入力した値は画面に表示されません。

ブラウザで http://localhost:5173 を開き、ユーザー名 admin と設定したパスワードでログインします。初回にパスワード変更を求められたら完了し、接続を登録してください。

ログイン後、SettingsからS3互換ストレージを追加します。
初期設定後に接続を登録するSettingsのConnections画面

ログイン後、SettingsからS3互換ストレージを追加します。

本番は専用の設定とTLS proxyを使う ​

ソースから本番構成を起動する場合は compose.prod.yaml を使います。.env の主要な設定は次のとおりです。

設定内容
POSTGRES_PASSWORDPostgreSQL管理用のパスワード
DASHBOARD_PASSWORDDATABASE_URL_RW / DATABASE_URL_RO と一致するパスワード
LINEAGE_DB_PASSWORDOpenLineage用DBロールのパスワード
WORKER_DB_PASSWORD音声解析worker専用DBロールのパスワード
ENCRYPTION_KEY32バイトのhex形式の暗号化キー
AUTH_MODElocal、oidc、hybrid のいずれか
AUTH_COOKIE_SECUREHTTPSで使う場合は true
ALLOWED_ORIGINSブラウザが使うURLのorigin
DATASET_REGISTRY_URL / DATASET_REGISTRY_TOKEN互換Registryへの接続設定。本番では必須

新規環境では、Webの入口を起動する前にAdminを作成します。

bash
docker compose -f compose.prod.yaml build
docker compose -f compose.prod.yaml up -d postgres
docker compose -f compose.prod.yaml run --rm api-internal \
  node dist/scripts/bootstrap-admin.js --username admin
docker compose -f compose.prod.yaml up -d --build

UIは 127.0.0.1:8080、OpenLineage送信専用の入口は 127.0.0.1:8081 です。UIにはintranet内のTLS proxyを接続します。Pipelineの送信先を公開する場合は、別のTLS hostnameから8081へ接続します。

既存DBの更新にはmigrationの適用順があります。DBの更新手順に従ってください。リリースbundleを使う場合はbundleの導入手順を参照します。

Apache License 2.0