🐴

Hasuraのdocker-compose環境でWebSocketのエラーがめちゃくちゃでたら

2020/12/02に公開

備忘録

Hasuraのdocker-compose環境

hasuraはdocker-composeでお手軽にローカル環境を構築できます。公式でも紹介されています。

docker-compose.yaml
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:v1.3.3
    ports:
    - "8080:8080"
    depends_on:
    - "postgres"
    restart: always
    environment:
      HASURA_GRAPHQL_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:

WebSocket関連のエラーが尋常じゃない量でる

上記のようなdocker-compose環境で立ち上がるconsoleは
http://localhost:8080/console でアクセスできます。
環境によってはこの場合にものすごい量のmain.js.gz:1 WebSocket connection to 'wss://telemetry.hasura.io/v1/ws' failed: Unknown reason というエラーが発生します。
これはhasuraがユーザーの匿名使用情報を収集するために行われている通信のようです[1]

解決

これは HASURA_GRAPHQL_ENABLE_TELEMETRY という環境変数をfalseに設定することでなくすことができます。

なので、先ほどのdocker-compose.yamlHASURA_GRAPHQL_ENABLE_TELEMETRY: "false"を追記しましょう。

docker-compose.yaml
# 前略
    environment:
      HASURA_GRAPHQL_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
      HASURA_GRAPHQL_ENABLE_TELEMETRY: "false" # ここを追記
      
volumes:
  db_data:

脚注
  1. https://hasura.io/docs/1.0/graphql/core/guides/telemetry.html ↩︎

Discussion