diff --git a/.env.example b/.env.example index 4823dba..79a19a5 100644 --- a/.env.example +++ b/.env.example @@ -6,6 +6,19 @@ DATALAYER_PG_USER=postgres DATALAYER_PG_DATABASE=datalayer-postgres DATALAYER_POSTGRES_EXPOSED_PORT=5434 +###################################################### +############### DATALAYER HASURA API ################### +###################################################### +DATALAYER_HASURA_ENABLE_CONSOLE=true +DATALAYER_HASURA_ADMIN_SECRET=my-admin-secret +DATALAYER_HASURA_UNAUTHORIZED_ROLE=public +DATALAYER_HASURA_CORS_DOMAIN=* +DATALAYER_HASURA_ENABLE_TELEMETRY=false +# HASURA_GRAPHQL_METADATA_DATABASE_EXTENSIONS_SCHEMA: "chain_data_schema_1" +## enable debugging mode. It is recommended to disable this in production +DATALAYER_HASURA_DEV_MODE=true +## uncomment next line to run console offline (i.e load console assets from server instead of CDN) +# HASURA_GRAPHQL_CONSOLE_ASSETS_DIR: /srv/console-assets ############################################################ ############### ENVIO POSTGRES & INDEXER ################### diff --git a/docker-compose.yaml b/docker-compose.yaml index 892e3fa..5f0b2b5 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -14,6 +14,49 @@ services: POSTGRES_PASSWORD: ${DATALAYER_POSTGRES_PASSWORD} networks: - datalayer + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${DATALAYER_PG_USER}"] + interval: 5s + timeout: 5s + retries: 5 + + api-hasura: + image: hasura/graphql-engine:latest + ports: + - "8082:8080" + restart: always + env_file: + - .env + environment: + HASURA_GRAPHQL_DATABASE_URL: postgres://${DATALAYER_PG_USER}:${DATALAYER_POSTGRES_PASSWORD}@datalayer-postgres:5432/${DATALAYER_PG_DATABASE} + HASURA_GRAPHQL_METADATA_DATABASE_URL: postgres://${DATALAYER_PG_USER}:${DATALAYER_POSTGRES_PASSWORD}@datalayer-postgres:5432/${DATALAYER_PG_DATABASE} + HASURA_GRAPHQL_ENABLE_CONSOLE: ${DATALAYER_HASURA_ENABLE_CONSOLE:-true} + HASURA_GRAPHQL_ADMIN_SECRET: ${DATALAYER_HASURA_ADMIN_SECRET:-secret} + HASURA_GRAPHQL_UNAUTHORIZED_ROLE: ${DATALAYER_HASURA_UNAUTHORIZED_ROLE:-public} + HASURA_GRAPHQL_CORS_DOMAIN: ${DATALAYER_HASURA_CORS_DOMAIN:-*} + HASURA_GRAPHQL_ENABLE_TELEMETRY: ${DATALAYER_HASURA_ENABLE_TELEMETRY:-false} + HASURA_GRAPHQL_EXPERIMENTAL_FEATURES: bigquery_string_numeric_input + HASURA_GRAPHQL_BIGQUERY_STRING_NUMERIC_INPUT: true + # HASURA_GRAPHQL_METADATA_DATABASE_EXTENSIONS_SCHEMA: ${DATALAYER_HASURA_METADATA_DATABASE_EXTENSIONS_SCHEMA:-chain_data_schema_1} + ## enable debugging mode. It is recommended to disable this in production + HASURA_GRAPHQL_DEV_MODE: ${DATALAYER_HASURA_DEV_MODE:-true} + HASURA_GRAPHQL_ENABLED_LOG_TYPES: "startup, http-log, webhook-log, websocket-log, query-log" + HASURA_GRAPHQL_ENABLED_APIS: "graphql,metrics" + HASURA_GRAPHQL_ADMIN_INTERNAL_ERRORS: "true" + ## uncomment next line to run console offline (i.e load console assets from server instead of CDN) + # HASURA_GRAPHQL_CONSOLE_ASSETS_DIR: /srv/console-assets + depends_on: + datalayer-postgres: + condition: service_healthy + healthcheck: + test: timeout 1s bash -c ':> /dev/tcp/127.0.0.1/8080' || exit 1 + interval: 5s + timeout: 2s + retries: 50 + start_period: 5s + networks: + - datalayer + envio-postgres: image: postgres:16 restart: always