services:
  postgres:
    container_name: deep-postgres
    image: deepf/pg12-plv8:deeplinks-70-menzorg
    networks:
      - network
    ports:
    - "5432:5432"
    restart: always
    command: postgres -c max_connections=200 -c log_error_verbosity=TERSE -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.43.0
    networks:
      - network
    ports:
    - "8080: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.6.1
    networks:
      - network
    depends_on:
      - hasura
    restart: always
    ports:
      - "${DEEP_HASURA_STORAGE_PORT}:8000"
    extra_hosts: ['host.docker.internal:host-gateway']
    environment:
      - 'PORT=8000'
      - 'DEBUG:1'
      # - 'HASURA_METADATA=1'
      - 'HASURA_ENDPOINT=${DEEP_HASURA_STORAGE_HASURA_ENDPOINT}'
      - 'HASURA_GRAPHQL_ADMIN_SECRET=${DEEP_HASURA_STORAGE_HASURA_GRAPHQL_ADMIN_SECRET}'
      - 'S3_ENDPOINT: http://deep-minio:9000'
      - 'S3_ACCESS_KEY: ${DEEP_MINIO_ROOT_USER}'
      - 'S3_SECRET_KEY: ${DEEP_MINIO_ROOT_PASSWORD}'
      - 'S3_BUCKET: "default"'
      - 'S3_ROOT_FOLDER: "f215cf48-7458-4596-9aa5-2159fc6a3caf"'
      - 'POSTGRES_MIGRATIONS=0'
      - 'POSTGRES_MIGRATIONS_SOURCE=${DEEP_HASURA_STORAGE_POSTGRES_MIGRATIONS_SOURCE}'
      - 'DATABASE_URL=${DEEP_HASURA_STORAGE_POSTGRES_MIGRATIONS_SOURCE}'
      - 'GRAPHQL_ENGINE_BASE_URL=${DEEP_HASURA_STORAGE_HASURA_ENDPOINT}'
      - 'GRAPHQL_ENDPOINT=${DEEP_HASURA_STORAGE_HASURA_ENDPOINT}'
      - 'JWT_SECRET=${DEEP_HASURA_GRAPHQL_JWT_SECRET}'
      # - 'CLAMAV_SERVER: tcp://deep-clamd:3310'
    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
    networks:
      - network
    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"
  links:
    container_name: deep-links
    image: deepf/deeplinks:main
    networks:
      - network
    ports:
    - "3006:3006"
    restart: always
    pull_policy: always
    volumes:
    - /var/run/docker.sock:/var/run/docker.sock
    extra_hosts: ['host.docker.internal:host-gateway']
    environment:
      - 'DEEPLINKS_HASURA_PATH=${DEEPLINKS_HASURA_PATH}'
      - 'DEEPLINKS_HASURA_SSL=${DEEPLINKS_HASURA_SSL}'
      - 'DEEPLINKS_HASURA_SECRET=${DEEPLINKS_HASURA_SECRET}'
      - 'JWT_SECRET=${DEEP_HASURA_GRAPHQL_JWT_SECRET}'
      - 'DEEPLINKS_HASURA_STORAGE_URL=${DEEPLINKS_HASURA_STORAGE_URL}'
      - 'DEEPLINKS_PUBLIC_URL=${DEEPLINKS_PUBLIC_URL}'
    logging:
      driver: "json-file"
      options:
        max-size: 10m
        max-file: "3"
  perception:
    container_name: deep-perception
    image: deepf/perception:main
    networks:
      - network
    ports:
    - "3007:3007"
    restart: always
    pull_policy: always
    extra_hosts: ['host.docker.internal:host-gateway']
    environment:
      - 'NEXT_PUBLIC_GRAPHQL_URL=${NEXT_PUBLIC_GQL_PATH}'
      - 'SECRET=${DEEPLINKS_HASURA_SECRET}'
      - 'GQL=${DOCKER_GQL_URL}'
      - 'SSL=${NEXT_PUBLIC_GQL_SSL}'
    logging:
      driver: "json-file"
      options:
        max-size: 10m
        max-file: "3"
  # clamd:
  #   container_name: deep-clamd
  #   image: nhost/clamav:0.1.2
  #   restart: unless-stopped
  #   ports:
  #     - '3310:3310'
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