追記 2022年1月9日
docker compose restartではだめ down&upで
docker-compose.ymlの設定の変更をしたときには。
例
HASURA_GRAPHQL_ENABLE_CONSOLE: "true"
これはGUIのHasura consoleに関する命令
マイグレーションを移行する時
開発から本番環境へ
に設定しておくことを推奨
ただし、開発者が一人なら不要
HASURA_GRAPHQL_ENABLE_CONSOLE: "false"
のようにfalseにすると
http://localhost:8080/console
で
{"path":"$","error":"resource does not exist","code":"not-found"}
と表示される
これはブラウザ上からHasuraが操作できなくなるという意味。
コマンド
docker compose restart
では、設定値は反映されない
docker compose down
docker compose up
とする必要がある。
VScode側のHasura consoleを使ってみる
hasura console
と打つと
http://localhost:9695/
とHasura consoleが立ち上がり使える。
まとめると
設定を反映させるためには
docker compose down
docker compose up
と順番に打つ。
HASURA_GRAPHQL_ENABLE_CONSOLE: "false"
と設定すると
Docker compose起動時に自動的に立ち上がる
ブラウザのGUI console
http://localhost:8080/console
は使えなくなる
hasura consoleで立ち上げたGUI console
http://localhost:9695/console
は使える。
docker-compose.ymlでのDBの設定値は2つに別れたけど同じ値でもok
HASURA_GRAPHQL_METADATA_DATABASE_URL
PG_DATABASE_URL
メタデータと本体のデータの2つに別れたがどっちも同じデータベースの設定値でもok
例
HASURA_GRAPHQL_METADATA_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres
PG_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres
どちらも同じ値でも起動を確認しました
docker-compose.ymlのrestart: always
postgres
restart: alwaysを消すとhasura consoleが動かない
hasura
restart: alwaysを消しても挙動は同じ
記事 2022年1月8日
Docker 起動時docker compose up した時マイグレーションファイルなどが見当たらない・・・どこにあるの??
docker-compose.yml
があるディレクトリで
hasura init
を実行します
そうすると
hasuraフォルダ(hasura init実行時に変更可能)ができます。
cd hasura
hasura console
を実行すると
Hasuraランチャーが立ち上がります。
メッセージ(一部)
x-hasura-admin-secret/x-hasura-access-key required, but not found
がでる時がある。
これはDocker compose側で
HASURA_GRAPHQL_ADMIN_SECRET: myadminsecretkey
シークレットキーを設定してあるのに
config.yamlには設定していないため。
見つからないとあるので
config.yamlファイルに
admin_secret: myadminsecretkey
この行を追加する
version: 3
endpoint: http://localhost:8080
admin_secret: myadminsecretkey
metadata_directory: metadata
actions:
kind: synchronous
handler_webhook_baseurl: http://localhost:3000
hasura init実行時に オプションを付ければ回避可能
hasura init <フォルダ名> --endpoint <endopoint> --admin-secret <パスワード>
例
hasura init hasura --endpoint http://localhost:9000 --admin-secret myadminsecretkey
--admin-secretはdocker-compose.ymlのHASURA_GRAPHQL_ADMIN_SECRETで設定した値を使う。
version: "3.6"
services:
postgres:
image: postgres:12
restart: always
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: postgrespassword
graphql-engine:
image: hasura/graphql-engine:v2.1.1
ports:
- "8080:8080"
depends_on:
- "postgres"
restart: always
environment:
## postgres database to store Hasura metadata
HASURA_GRAPHQL_METADATA_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres
## this env var can be used to add the above postgres database to Hasura as a data source. this can be removed/updated based on your needs
PG_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres
## enable the console served by server
HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
## enable debugging mode. It is recommended to disable this in production
HASURA_GRAPHQL_DEV_MODE: "true"
HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log
## uncomment next line to set an admin secret
HASURA_GRAPHQL_ADMIN_SECRET: myadminsecretkey
volumes:
db_data:
※それぞれのパスワードは適宜変更してください
docker-composeはversion2になって複数ソースが設定できるようになっていて
HASURA_GRAPHQL_METADATA_DATABASE_URL
PG_DATABASE_URL
上はpostgresデータベースのmetadata設定
下はpostgresデータベースの設定
コマンドも変わって
docker compose up
と「-」記号が消えました。
すでに
hasura init
を実行した場所ではすでに存在するため
hasura init
を再び実行しても「初期化」されません。
別のフォルダ名にすれば別の設定が可能なだけです。
初期化するためのコマンドはわかりません。
Hasura CLI Configuration Reference | Hasura GraphQL Docs
https://hasura.io/docs/latest/graphql/core/hasura-cli/config-reference.html
console
つまり操作する場所がたくさん出てきます
軽く2つに分けると
ブラウザのGUI
と
VScodeのCUI
の2種類
種類
ブラウザのGUI
Hasura console Hasuraそのもののを操作する場所(2種類ある)
Hasura Cloud console HasuraCloudプロジェクト全体の管理する場所
VScodeのCUI
VScode console CUIでHasuraを操作する場所
Hasura Cloud consoleとHasura consoleの違い
Hasura Cloud consoleは
Hasura Cloud全体をプロジェクト単位で見る
https://cloud.hasura.io/projects
Hasura consoleは
HasuraもしくはHasura Cloudの1プロジェクト
例
http://localhost:8080/
http://localhost:9695/
CUIのconsole
docer compose up(ローカルでDockerをつかってHasuraを利用した時)
docker composeで立ち上げた時に自動で起動されるconsoleは
http://localhost:8080/
コマンド hasura consoleで立ち上げた時に出来るconsole
http://localhost:9695/
この2つは別物です。
たとえば、データベースのテーブルを作ってみます
Hasura console でテーブルを作成すると
/hasura/migrations
とディレクトリに書き込まれます。
http://localhost:8080/
で作るとマイグレーションファイル等には反映されません
http://localhost:9695/
で作るとマイグレーションファイル等に反映されます。
http://localhost:9695/
だとDATA(上のバー)タブの
DataManager(左サイドバー)に
SQL
Migrations
となっており
Migrationsが追加されているのがわかります。
Migrationsの場所で
Allow Postgres schema changes via console
をOFFにすると
ブラウザ上のconsoleからスキーマの変更はできなくなります。
http://localhost:9695/で変更をして、
http://localhost:8080/で変更をして、
http://localhost:9695/で変更をすると、
どちらもVScodeの
hasura
metadata
には反映されますが
hasura
migrations
には
http://localhost:8080/の変更分は反映されません。
どこか他のデータベースで
このマイグレーションファイルを適用させると
http://localhost:8080/で変更した分は反映されないことになります。
Hasuraにはエンドポイントがたくさんあるけど・・・どれがどれ?
Hasuraではエンドポイントがデータの出入り口なので
種類によって色々ある。
Hasura consoleのエンドポイント
と書いてあったら
ローカルのエンドポイント
http://localhost:8080/
Hasura Cloudのエンドポイント
https://*****.hasura.app/
*****は自分でつけた名前
を指している。(この形が基本)
Setting up Hasura migrations | Hasura GraphQL Docs
https://hasura.io/docs/latest/graphql/core/migrations/migrations-setup.html
In any case, the endpoint should not contain the v1/graphql API path. It should just be the hostname and any sub-path if it is configured that way.
いずれにせよ、エンドポイントにはv1/graphqlのAPIパスを含めるべきではないでしょう。それは単にホスト名と、そのように設定されている場合は任意のサブパスであるべきです。
GraphQL Endpointは
http://localhost:8080/v1/graphql
https://*****.hasura.app/v1/graphql
Hasuraを利用したアプリのローカル開発でのディレクトリ構造は?
front
(Next.jsアプリ)
hasura
(マイグレーションファイル等)
docker-compose.yml
Dockerを使いローカルで開発したHasuraのを、Hasura Cloudで使う方法は?
ローカルではDockerを利用した
Hasuraコンテナで動かしていた
Next.jsアプリを読み込めるのに
ネットに上げると読み込んでくれなくなった
未解決
hasura/github-integration-starter: Try out Hasura's GitHub Integration on Cloud Projects using the examples in this repo.
https://github.com/hasura/github-integration-starter
を使う。
ただWindowsでやるとエラーが出て、その問題が解決できなかった。
Hasura Cloudのプロジェクトの歯車アイコンから
Git Deploy[Beta]とある、未だ調査中・・・・・・・