diff --git a/stack/hasura/data-connector.yml b/stack/hasura/data-connector.yml new file mode 100644 index 0000000..efc9174 --- /dev/null +++ b/stack/hasura/data-connector.yml @@ -0,0 +1,25 @@ +services: + graphql-engine: + depends_on: + data-connector-agent: + condition: service_healthy + environment: + HASURA_GRAPHQL_METADATA_DEFAULTS: '{"backend_configs":{"dataconnector":{"athena":{"uri":"http://data-connector-agent:8081/api/v1/athena"},"mariadb":{"uri":"http://data-connector-agent:8081/api/v1/mariadb"},"mysql8":{"uri":"http://data-connector-agent:8081/api/v1/mysql"},"oracle":{"uri":"http://data-connector-agent:8081/api/v1/oracle"},"snowflake":{"uri":"http://data-connector-agent:8081/api/v1/snowflake"}}}}' + data-connector-agent: + image: hasura/graphql-data-connector:v2.46.0 + restart: always + ports: + - 8081 + environment: + QUARKUS_LOG_LEVEL: ERROR # FATAL, ERROR, WARN, INFO, DEBUG, TRACE + ## https://quarkus.io/guides/opentelemetry#configuration-reference + QUARKUS_OPENTELEMETRY_ENABLED: "false" + ## QUARKUS_OPENTELEMETRY_TRACER_EXPORTER_OTLP_ENDPOINT: http://jaeger:4317 + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8081/api/v1/athena/health"] + interval: 5s + timeout: 10s + retries: 5 + start_period: 5s + networks: + - private diff --git a/stack/hasura/hasura.mk b/stack/hasura/hasura.mk new file mode 100644 index 0000000..fef761e --- /dev/null +++ b/stack/hasura/hasura.mk @@ -0,0 +1,4 @@ +ENV_VARS += HASURA_GRAPHQL_ENGINE_SERVICE_8080_TAGS +hasura := hasura/hasura hasura/postgres +HASURA_GRAPHQL_ENGINE_SERVICE_8080_NAME := hasura +HASURA_GRAPHQL_ENGINE_SERVICE_8080_TAGS := $(call tagprefix,hasura_graphql_engine,8080) diff --git a/stack/hasura/hasura.yml b/stack/hasura/hasura.yml new file mode 100644 index 0000000..c9f97b0 --- /dev/null +++ b/stack/hasura/hasura.yml @@ -0,0 +1,26 @@ +services: + graphql-engine: + image: hasura/graphql-engine:v2.46.0 + ports: + - 8080 + restart: always + environment: + ## postgres database to store Hasura metadata + HASURA_GRAPHQL_METADATA_DATABASE_URL: ${HASURA_GRAPHQL_METADATA_DATABASE_URL:-postgres://${HASURA_POSTGRES_USER:-${POSTGRES_USER:-postgres}}:${HASURA_POSTGRES_PASSWORD:-${POSTGRES_PASSWORD:-postgres}}@postgres:5432/${HASURA_POSTGRES_DB:-${POSTGRES_DB:-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: ${HASURA_PG_DATABASE_URL:-postgres://${HASURA_POSTGRES_USER:-${POSTGRES_USER:-postgres}}:${HASURA_POSTGRES_PASSWORD:-${POSTGRES_PASSWORD:-postgres}}@postgres:5432/${HASURA_POSTGRES_DB:-${POSTGRES_DB:-postgres}}} + ## enable the console served by server + HASURA_GRAPHQL_ENABLE_CONSOLE: ${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: ${HASURA_GRAPHQL_DEV_MODE:-true} + HASURA_GRAPHQL_ENABLED_LOG_TYPES: ${HASURA_GRAPHQL_ENABLED_LOG_TYPES:-startup, http-log, webhook-log, websocket-log, query-log} + ## uncomment next line to run console offline (i.e load console assets from server instead of CDN) + HASURA_GRAPHQL_CONSOLE_ASSETS_DIR: ${HASURA_GRAPHQL_CONSOLE_ASSETS_DIR:-/srv/console-assets} + ## uncomment next line to set an admin secret + HASURA_GRAPHQL_ADMIN_SECRET: ${HASURA_GRAPHQL_ADMIN_SECRET:-myadminsecretkey} + labels: + - SERVICE_8080_CHECK_HTTP=/ + - SERVICE_8080_NAME=${COMPOSE_SERVICE_NAME}-graphql-engine-8080 + - SERVICE_8080_TAGS=${HASURA_GRAPHQL_ENGINE_SERVICE_8080_TAGS:-urlprefix-hasura.localhost/*} + networks: + - private diff --git a/stack/hasura/postgres.yml b/stack/hasura/postgres.yml new file mode 100644 index 0000000..110a875 --- /dev/null +++ b/stack/hasura/postgres.yml @@ -0,0 +1,23 @@ +version: '3.6' + +services: + postgres: + image: postgres:alpine + environment: + - POSTGRES_DB=${HASURA_POSTGRES_DB:-postgres} + - POSTGRES_HOST_AUTH_METHOD=${HASURA_POSTGRES_HOST_AUTH_METHOD:-trust} + - POSTGRES_PASSWORD=${HASURA_POSTGRES_PASSWORD:-postgres} + - POSTGRES_USER=${HASURA_POSTGRES_USER:-postgres} + labels: + - SERVICE_5432_CHECK_TCP=true + - SERVICE_5432_NAME=${COMPOSE_SERVICE_NAME}-postgres-5432 + networks: + - private + ports: + - 5432 + volumes: + - postgres:/var/lib/postgresql/data + restart: always + +volumes: + postgres: