🌌

Hasura Cloudからローカル環境(Docker)へ移行する手順

2023/09/08に公開

この記事で紹介すること

  • Hasura Cloudで構築されたGraphQL環境が既にあり、後からローカルで環境を再現する。
  • Hasura CloudとGithubを連携してCI/CD環境を整える。

0. 事前準備

Hasuraをローカルで動作させる為に、以下のパッケージが必要です。
各環境に合わせて、インストールしておきましょう。

  • Hasura CLI

https://hasura.io/docs/latest/hasura-cli/install-hasura-cli/

  • Docker Desktop

https://docs.docker.jp/desktop/install.html

  • Hasura Cloudの情報を用意
    今回の例では、次のようにHasura Cloud上で環境を作成しています。

1. Dockerの設定ファイルを用意

ローカルでHasura(Docker)を動作させる為の最低限の設定ファイルをGistに用意しました。
https://gist.github.com/HarukiExplorer/6686b280a3ab41a4209b8761ae5c8556
下記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へデプロイする為の設定が可能となります。

Algorithm's Tech Blog

Discussion