データベースドキュメント管理システム dmemoを立ち上げてみた。
はじめに
好物はインフラとフロントエンドのかじわらゆたかです。
晩ごはん何作ろうかなと思っていた際にこの記事を見かけたので、
動かして見るじゃ〜と思い1ヶ月以上経ってしまいました。
データベースドキュメント管理システム dmemo のご案内 - クックパッド開発者ブログ
実際のところデータベースに存在するスキーマ・テーブル・カラムなどのスキーマ情報はプログラムで自動的に取得できる情報です。スキーマ情報からはわからない「このテーブルはなんのためのテーブルなのか」「このカラムが取りうる値はなんなのか」といった情報のみを人が管理していけば良い、そんなツールを目指して作ったのが dmemo です。
ddmemoが解決しようとしている課題は弊部でも同様に存在している課題であり、
それ以外のケースにおいても、dmemoが解決してくれるケースは多いのではないか思っております。
起動するための下準備 Google API編
dmemoはGoogle+ の認証を用いているため、GoogleのAPI Keyを払い出す必要があります。
Google APIの払い出しには、プロジェクトの作成・APIの有効化・認証情報の作成といった3段階の作業を行う必要があります。
プロジェクトの作成
Google Cloud PlatformのAPI等はプロジェクトに紐付いていく考え方になります。
そのため、まずはプロジェクトを作成します。
Google Cloud Platformにログインし、プロジェクトを作成します。
APIの有効化
dmemoの認証はOmniAuth Google OAuth2 Strategyを用いて実装されており、
内部的にはGoogle+とContacts APIを用いているため、それらを有効にします。
Google APIを利用するを選択します。
APIを利用するを選択し、Google+,Contacts APIを有効にします。
認証情報の作成
最後にこれらのAPIを使うための認証情報を作成します。
API Managerの左側のメニューか認証情報を選択し、出てきたダイアログから承認情報を選択→OAuthクライアントIDを選択します。
OAuthは同意画面を作成する必要がある旨を言われるので、同意画面を作成します。
同意画面を作成後、ウェブアプリケーションの認証情報を作っていきます。
アプリケーションの種類はウェブアプリケーションを選択し、承認済みのリダイレクト URIにdmemoが用いるリダイレクトURIを記載します。
今回の場合は以下の内容を入力します。
http://localhost:3000/auth/google_oauth2/callback
入力後、作成を押下することでクライアントIDとクライアントシークレットが取得できます。
これらを設定ファイルに記載していくことになります。
起動するための下準備 Docker Compose編
Dockerコマンド一発でdmemoと、それに必要なPostgresqlを動かそうと思います。
そう言った際にDocker composeを用いるとDBとdmemoのコンテナを同時に立ち上げるといったことが可能です。
私は以下に記載しました。
docker-compose.yml
version: '2' services: web: image: hogelog/dmemo env_file: .env.docker volumes: - ./log/docker:/app/log ports: - "3000:3000" depends_on: - db links: - db db: image: postgres environment: - POSTGRES_PASSWORD=mysecretpassword
起動するための下準備 Docker Compose編
最後雛形が公開されてて.env.sampleを元に、.env.dockerファイルを作成します。
.env.docker
GOOGLE_CLIENT_ID=(Google APIより払いだされたクライアントID) GOOGLE_CLIENT_SECRET=(Google APIより払いだされたクライアントシークレット) GOOGLE_HOSTED_DOMAIN=(必要に応じて入力・入力した場合、当該のドメインを含むGメールアカウントのみdmemoを使うことができる) SECRET_KEY_BASE=(docker run --rm --env-file .env.docker -t hogelog/dmemo ./bin/rake secretを実行することで発行されたsecret) DATABASE_URL=postgresql://postgres:mysecretpassword@db/postgres
起動してみた
上記の設定が完了した状態で、以下のコマンドを実行することでdockerのコンテナが2台立ち上がります。
docker-compose up
初回起動時はTableのMigrationが必要なため以下のコマンドを実行します。
docker exec -it dmemo_web_1 ./bin/docker_db_apply.sh
以下のURLを開きます。
http://localhost:3000
Googleのアカウントにログインしていない環境だと、
まずGoogleのログイン画面が表示されるかと思います。
ログインが完了した後に、dmemoが用いるリクエストの確認画面が表示されます。
許可することで、dmemoの画面が表示されます。
まとめ
ひとまずdmemoを起動することができました。
次回、ユーザーの管理者への昇格・テーブルスキーマの登録・Keywordの登録周りと実施したいと思います。