追記:https://qiita.com/nakamoto/items/dd805fa555f1f3a7c2fa
↑Hasuraを使うなら、cockroachDBではなく、Neonにしたほうが良いです↑
前提
- HasuraチュートリアルをDockerとcockroachDBでやる日本語公式ページはない
- Hasura日本語公式ページには、無料のHerokuを利用するチュートリアルがあるが、2024年現在Herokuは有料である
- Windows環境で試した
見たページ
- https://hasura.io/learn/ja/graphql/hasura/setup/
- https://www.cockroachlabs.com/docs/stable/hasura-getting-started
- https://cloudandbuild.jp/blog/article-6
- https://qiita.com/mycndev/items/fc7a8fecd7d0b0d09828
- https://x.com/nakamotojp/status/1801466370267431401
- https://hasura.io/docs/latest/databases/postgres/cockroachdb/getting-started/docker/
開始
手順
CockroachDBの準備
- https://www.cockroachlabs.com/ にアクセス
- 右上Startなんちゃらをクリック
- Googleアカウントでログインすると登録もできる
- 紫色のアイコンの形は見なかったことにする(わたしはずっとそうしてる)
VSCodeの準備
Dockerの準備
dockerファイルをダウンロードしてDocker上で実行するまで
-
VSCodeのアイコンをダブルクリックしてVSCodeを起動しておく
-
Docker Desktopを起動します。WindowsでもMacでもDockerのアイコンをダブルクリックすると起動できるんじゃないかと思います。
-
マイドキュメントに開発フォルダを用意しておく。名前はDevとか開発フォルダとわかれば何でもよしっ。今回はDevに統一。
-
Devフォルダの中に今回の学習用フォルダHasura-firstフォルダを作成
-
VSCodeでHasura-firstフォルダを開く。開き方がわからない場合は、VSCode上で「Ctrl+@」を押してターミナルを表示させる
-
ターミナルっていうのは映画でハッカーがカチャカチャやる画面みたいな、文字だけが表示される画面
-
そんなハッカー的な画面は開いた時は特段表示はほとんどなにもない状態。とりあえずターミナル上の何処かを適当にクリックして、先程作ったHasura-firstフォルダまでのパスをコピー&ペーストする。
-
Hasura-firstまでのパスのパスって何?と思った人は、Hasura-firstフォルダを開いた状態で、フォルダ表示の上に有る次のような名前部分がパス。
-
ここをクリックするとご利用のPCの設定により次のような文字に変わるので適当にその文字全部をコピーする。
-
C:\Users\abc\Documents\Dev\hasura-first
-
VSCodeに戻りそんなほとんど何もない状態の画面で
cd
のあとにペーストすると、さっきコピーしたパスがペーストされる。つまり、次のような感じの内容を実行することになる -
cd C:\Users\abc\Documents\Dev\hasura-first
-
実行はEnterキーを押す
-
curl https://raw.githubusercontent.com/hasura/graphql-engine/master/install-manifests/docker-compose-cockroach/docker-compose.yaml -o docker-compose.yaml
-
すると
docker-compose.yaml
ファイルがダウンロードされる -
VSCodeのターミナルの同じ場所で次のコマンドを実行します
-
docker compose up -d
-
するとDocker上に、これまでの操作で用意したdocker用のHasuraファイルが実行されます。
-
Docker Desktop上には次のようにHasuraのプロジェクトが実行されている状態になります
-
もし、このへんまででちょっと難しいと思ったら、有料相談をご活用なさって下さい。
Hasuraを表示
- http://localhost:8080/ をクリックしてブラウザでHasuraを表示
- localhostというのは今見ている自分のPCを意味します
- :8000ってところは、日本語にすると:が「ポートの」という意味です。つまり、ポートの8000ってところを見に行ってます。
- ポートの8000っていうのは、住所で言うところの番地を意味します。あまり深く考えないで下さい。
-
これでHasuraを操作できます。
CockroachDBを Hasuraに接続します
-
CockroachDBを選択
-
http://localhost:8080/console/remote-schemas/manage/add にアクセス
-
CockroachDBの右上
Connect
をクリック -
こんな感じで選択した表示の
-
使うのはこの部分から
?sslmode=verify-full
を切り取った部分だけなので、メモ帳にコピーしたものを貼り付けてこの部分だけにする。内容は個人個人で少しづつ異なる。 -
postgresql://〇〇:<ENTER-SQL-USER-PASSWORD>@〇〇-0000.6xw.aws-ap-southeast-1.cockroachlabs.cloud:12345/defaultdb?sslmode=verify-full
-
postgresql://〇〇:<ENTER-SQL-USER-PASSWORD>@〇〇-0000.6xw.aws-ap-southeast-1.cockroachlabs.cloud:12345/defaultdb
-
から
?sslmode=verify-full
を切り取った残りの次のものを利用する -
postgresql://〇〇:<ENTER-SQL-USER-PASSWORD>@〇〇-0000.6xw.aws-ap-southeast-1.cockroachlabs.cloud:12345/defaultdb
-
なお、
defaultdb
は、CockroachDBで作成したデータベース名。 -
そして、
<ENTER-SQL-USER-PASSWORD>
部分を自分のCockroachDBのパスワードに置き換える -
パスワードが
123456
の場合は次のようになる。 -
postgresql://〇〇:123456@〇〇-0000.6xw.aws-ap-southeast-1.cockroachlabs.cloud:12345/defaultdb
-
このパスワードを置き換えた文字列を再度コピーしておく
-
先ほどコピーしたやつをGraphQL Service URLに貼り付けて右下の
Connect
をクリック -
ここまでで、CockroachDBとHasuraの接続ができた
-
補足として本当はenvironment variableで設定した方が良い。多分
.env
保存するんだろうけどドキュメント書いてあるところ分からなかったから保留
dockerベースのURL
今回Dockerを利用しているので次のURLを参考にします
ここまで来ていながら
-
ここまで来ていながらHasuraはDockerじゃなくても良くね?っておもったので、そもそも登録していたHasuraにログイン
-
基本的な設定はこれまでと同様
DatabaseURL
で、最後の?sslmode=verify-full
を削除してConnect
しないと、root certificate error
になる点はHasuraWeb側でも同じなので注意。 -
なお、この削除する操作がわからず3時間は設定が止まってしまった
-
これ以降の操作は公式ページを見ると日本語で書いてある。なぜここまでは、公式ページを見ないのか思い出せたら思い出してみて。
-
ご相談お気軽に