version: '3.7'
services:
  postgres:
    container_name: deep-postgres
    image: deepf/pg12-plv8:deeplinks-70-menzorg
    networks:
      - network
    ports:
    - "${DEEP_POSTGRES_PORT}:5432"
    restart: always
    command: postgres -c max_connections=200 -c log_error_verbosity=verbose -c client_min_messages=DEBUG5 -c log_min_messages=DEBUG5 -c log_min_error_statement=DEBUG5 -c log_duration=true
    volumes:
    - db-data:/var/lib/postgresql/data
    environment:
      - 'POSTGRES_USER=${DEEP_POSTGRES_USER}'
      - 'POSTGRES_PASSWORD=${DEEP_POSTGRES_PASSWORD}'
      - 'PGGSSENCMODE=${DEEP_POSTGRES_GSS_ENCODING_MODE}'
      - 'PGSSLMODE=${DEEP_POSTGRES_SSL_MODE}'
      - 'PGREQUIRESSL=${DEEP_POSTGRES_REQUIRE_SSL}'
    logging:
      driver: "json-file"
      options:
        max-size: 10m
        max-file: "3"
  hasura:
    container_name: deep-hasura
    image: hasura/graphql-engine:v2.3.1
    networks:
      - network
    ports:
    - "${DEEP_HASURA_PORT}:8080"
    extra_hosts: ['host.docker.internal:host-gateway']
    links:
    - "postgres:postgres"
    depends_on:
    - "postgres"
    restart: always
    environment:
      - 'HASURA_GRAPHQL_DATABASE_URL=${DEEP_HASURA_GRAPHQL_DATABASE_URL}'
      - 'HASURA_GRAPHQL_ENABLE_CONSOLE=${DEEP_HASURA_GRAPHQL_ENABLE_CONSOLE}'
      - 'HASURA_GRAPHQL_DEV_MODE=${DEEP_HASURA_GRAPHQL_DEV_MODE}'
      - 'HASURA_GRAPHQL_LOG_LEVEL=${DEEP_HASURA_GRAPHQL_LOG_LEVEL}'
      - 'HASURA_GRAPHQL_ENABLED_LOG_TYPES=${DEEP_HASURA_GRAPHQL_ENABLED_LOG_TYPES}'
      - 'HASURA_GRAPHQL_ADMIN_SECRET=${DEEP_HASURA_GRAPHQL_ADMIN_SECRET}'
      - 'HASURA_GRAPHQL_JWT_SECRET=${DEEP_HASURA_GRAPHQL_JWT_SECRET}'
      - 'HASURA_GRAPHQL_ENABLE_REMOTE_SCHEMA_PERMISSIONS=${DEEP_HASURA_GRAPHQL_ENABLE_REMOTE_SCHEMA_PERMISSIONS}'
      - 'HASURA_GRAPHQL_UNAUTHORIZED_ROLE=${DEEP_HASURA_GRAPHQL_UNAUTHORIZED_ROLE}'
    logging:
      driver: "json-file"
      options:
        max-size: 10m
        max-file: "3"
  storage:
    container_name: deep-hasura-storage
    image: nhost/hasura-storage:0.2.3
    depends_on:
      - hasura
    restart: always
    ports:
      - "${DEEP_HASURA_STORAGE_PORT}:8000"
    extra_hosts: ['host.docker.internal:host-gateway']
    environment:
      - 'HASURA_GRAPHQL_ADMIN_SECRET=${DEEP_HASURA_STORAGE_HASURA_GRAPHQL_ADMIN_SECRET}'
      - 'DEBUG=${DEEP_HASURA_STORAGE_DEBUG}'
      - 'HASURA_METADATA=${DEEP_HASURA_STORAGE_HASURA_METADATA}'
      - 'HASURA_ENDPOINT=${DEEP_HASURA_STORAGE_HASURA_ENDPOINT}'
      - 'S3_ENDPOINT=${DEEP_HASURA_STORAGE_S3_ENDPOINT}'
      - 'S3_ACCESS_KEY=${DEEP_HASURA_STORAGE_S3_ACCESS_KEY}'
      - 'S3_SECRET_KEY=${DEEP_HASURA_STORAGE_S3_SECRET_KEY}'
      - 'S3_BUCKET=${DEEP_HASURA_STORAGE_S3_BUCKET}'
      - 'S3_ROOT_FOLDER=${DEEP_HASURA_STORAGE_S3_ROOT_FOLDER}'
      - 'POSTGRES_MIGRATIONS=${DEEP_HASURA_STORAGE_POSTGRES_MIGRATIONS}'
      - 'POSTGRES_MIGRATIONS_SOURCE=${DEEP_HASURA_STORAGE_POSTGRES_MIGRATIONS_SOURCE}'
    command: serve
    logging:
      driver: "json-file"
      options:
        max-size: 10m
        max-file: "3"
  minio:
    container_name: deep-minio
    image: minio/minio:RELEASE.2023-09-30T07-02-29Z
    restart: always
    volumes:
      - 'minio-data:/export'
      - 'minio-config:/root/.minio'
    ports:
      - "${DEEP_MINIO_PORT}:9000"
      - "${DEEP_MINIO_CONSOLE_PORT}:32765"
    environment:
      - 'MINIO_ROOT_USER=${DEEP_MINIO_ROOT_USER}'
      - 'MINIO_ROOT_PASSWORD=${DEEP_MINIO_ROOT_PASSWORD}'
    entrypoint: sh
    command: '-c ''mkdir -p /export/default && /opt/bin/minio server --address 0.0.0.0:9000 --console-address 0.0.0.0:32765 /export'''
    logging:
      driver: "json-file"
      options:
        max-size: 10m
        max-file: "3"
volumes:
  db-data:
    name: deep-db-data
  minio-data:
    name: deep-minio-data
  minio-config:
    name: deep-minio-config
networks:
  network:
    name: deep-network
    driver: bridge