version: "3.9"
services:
  server:
    build:
      context: .
      dockerfile: Dockerfile
      args:
        - PORT=8000
    ports:
      # If changing the local port (left hand side), no other changes required.
      # If changing the remote port (right hand side), 
      #   change the port in the args in the build section, 
      #   as well as the port in the command section to match
      - "8000:8000"
    working_dir: /app
    volumes:
      - .:/app
      # These mounted volumes hold the raw data that should be indexed for search. 
      # The path in your local directory (left hand side)
      #   points to the files you want to index.
      # The path of the mounted directory (right hand side),
      #   must match the path prefix in your config file.
      - ./tests/data/notes/:/data/notes/
      - ./tests/data/images/:/data/images/
      - ./tests/data/ledger/:/data/ledger/
      - ./tests/data/music/:/data/music/
      - ./tests/data/markdown/:/data/markdown/
      # Embeddings and models are populated after the first run
      # You can set these volumes to point to empty directories on host
      - ./tests/data/embeddings/:/data/embeddings/
      - ./tests/data/models/:/data/models/
    deploy:
      resources:
        limits:
          memory: 8g
    # Use 0.0.0.0 to explicitly set the host ip for the service on the container. https://pythonspeed.com/articles/docker-connection-refused/
    command: --host="0.0.0.0" --port=8000 -c=config/sample_config.yml -vv
