🌌
Hasura Cloudからローカル環境(Docker)へ移行する手順
この記事で紹介すること
- Hasura Cloudで構築されたGraphQL環境が既にあり、後からローカルで環境を再現する。
- Hasura CloudとGithubを連携してCI/CD環境を整える。
0. 事前準備
Hasuraをローカルで動作させる為に、以下のパッケージが必要です。
各環境に合わせて、インストールしておきましょう。
- Hasura CLI
- Docker Desktop
-
Hasura Cloudの情報を用意
今回の例では、次のようにHasura Cloud上で環境を作成しています。
1. Dockerの設定ファイルを用意
ローカルでHasura(Docker)を動作させる為の最低限の設定ファイルをGistに用意しました。
下記2ファイルをローカルの任意のディレクトリに配置してください。- composer.yml
- config.yaml
2. Hasura Cloudからmigration、及びmetadetaのエクスポート
次のコマンドを設定ファイルを置いたディレクトリ内で実行してください。
hasura migrate create init --from-server --endpoint <hasura-cloud-project-url> --admin-secret <admin-secret> --database-name <database-name>
hasura metadata export --endpoint <hasura-project-url> --admin-secret <admin-secret>
<hasura-cloud-project-url>
<admin-secret>
<database-name>
は、それぞれの環境に合わせて置き換えてください。
metadate
migrations
がそれぞれ取得されたら、netadata/databases/databases.yaml
を確認してみましょう。
databases.yaml
- name: default
kind: postgres
configuration:
connection_info:
database_url:
from_env: HASURA_GRAPHQL_DATABASE_URL
isolation_level: read-committed
use_prepared_statements: false
tables: "!include default/tables/tables.yaml"
from_env
で設定している環境変数名が、compose.yml
で定義している名前を異なる場合、compose.yml
の方を書き換え、Hasura Cloudの環境に合わせてください。
3. DockerとHasuraコンソールの起動
次のコマンドでDockerを起動してください。
docker compose up -d
Dockerが正常に起動されたら、次のコマンドでHasuraコンソールを開いてください。
hasura console
Hasuraコンソールで、テーブルやmetadata(リレーションなど)が、反映されていることが確認できます。
次のコマンドで、任意にmetadataとmigrationを反映させることも可能です。
hasura metadata apply
hasura migrate apply --all-databases
hasura metadata reload
4. ローカルからHasura Cloudへの反映
ローカル(Docker)環境でテーブル構造やリレーション、Actionsなどを変更した場合、自動的にmetadata、及びmigrationファイルが生成されます。
これらのファイルをGithubで管理することで、Hasura Cloudへデプロイする為の設定が可能となります。
Discussion