version: '3.8'

services:
  marquez-postgres:
    image: postgres:13
    container_name: marquez-postgres
    environment:
      POSTGRES_DB: marquez
      POSTGRES_USER: marquez
      POSTGRES_PASSWORD: marquez
    volumes:
      - marquez_db_data:/var/lib/postgresql/data
    ports:
      - "55432:5432"
    networks:
      - marquez-net

  marquez:
    image: marquezproject/marquez:latest
    container_name: marquez
    environment:
      MARQUEZ_CONFIG: /opt/marquez/marquez.yml
    ports:
      - "5001:5000"
    volumes:
      - ./marquez.yml:/opt/marquez/marquez.yml:ro
    depends_on:
      marquez-postgres:
        condition: service_started
    networks:
      - marquez-net
    restart: unless-stopped

  marquez-web:
    image: marquezproject/marquez-web:latest
    container_name: marquez-web
    environment:
      MARQUEZ_HOST: marquez
      MARQUEZ_PORT: 5000
      MARQUEZ_API_URL: http://marquez:5000
      WEB_PORT: 3000
    ports:
      - "3000:3000"
    depends_on:
      marquez:
        condition: service_started
    networks:
      - marquez-net
    restart: unless-stopped

  collector:
    build:
      context: ./collector
      dockerfile: Dockerfile
    container_name: collector
    env_file:
      - ./collector/.env
    environment:
      MARQUEZ_URL: http://marquez:5000
    ports:
      - "5002:5002"
    volumes:
      - collector_state:/app/state
      - ./keys:/app/keys:ro
    depends_on:
      - marquez
    networks:
      - marquez-net
    command: ["python", "-m", "collector.server"]

volumes:
  marquez_db_data:
  collector_state:

networks:
  marquez-net:
    driver: bridge
