name: mlflow-poc include: - path: - ./docker-compose.model-server.yaml services: mlflow: build: context: . target: mlflow-server ports: - "5000:5000" environment: # Build env BACKEND_URI: "postgresql://mlflow:mlflow_pass@postgres:5432" ARTIFACT_ROOT: "s3://mlflow-artifacts/" # AWS creds AWS_ACCESS_KEY_ID: "admin" AWS_SECRET_ACCESS_KEY: "admin123" # MLflow env MLFLOW_S3_ENDPOINT_URL: "http://minio:9000" depends_on: postgres: condition: service_started minio: condition: service_healthy networks: - mlflow-network dagster: build: context: . dockerfile: dagster/Dockerfile target: dagster ports: - "3000:3000" environment: - MLFLOW_TRACKING_URI=http://mlflow:5000 - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=admin123 - MLFLOW_S3_ENDPOINT_URL=http://minio:9000 - SKIP_INFERENCE=true - PYTHON_SLIM_BASE_IMAGE=python:3.10-slim - DOCKER_HOST=unix:///var/run/docker.sock healthcheck: test: [ "CMD-SHELL", "curl -f http://localhost:3000/server_info || exit 1" ] interval: 30s timeout: 10s retries: 3 depends_on: mlflow: condition: service_started minio: condition: service_healthy networks: - mlflow-network volumes: - ./src/notebooks:/usr/src/app/notebooks - ./src/dagster_job:/usr/src/app/src/dagster_job - /var/run/docker.sock:/var/run/docker.sock postgres: image: postgres:latest environment: POSTGRES_USER: "mlflow" POSTGRES_PASSWORD: "mlflow_pass" ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data networks: - mlflow-network minio: image: docker.io/bitnami/minio:latest ports: - "9000:9000" - "9001:9001" environment: MINIO_ROOT_USER: admin MINIO_ROOT_PASSWORD: admin123 MINIO_DEFAULT_BUCKETS: "mlflow-artifacts" volumes: - minio_data:/data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 20s retries: 3 start_period: 10s networks: - mlflow-network volumes: postgres_data: minio_data: driver: local driver_opts: type: none device: ./storage/minio o: bind networks: mlflow-network: name: mlflow-network driver: bridge