version: "3.7" services: postgres: image: postgres:latest container_name: postgres restart: always ports: - "5432:5432" environment: - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=${POSTGRES_DB} volumes: - postgres_data:/var/lib/postgresql/data - ./postgres/init.sql:/docker-entrypoint-initdb.d/init.sql healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] interval: 5s timeout: 5s retries: 5 minio: restart: always image: quay.io/minio/minio container_name: minio ports: - "9000:9000" - "9001:9001" environment: - MINIO_ROOT_USER=${MINIO_ACCESS_KEY} - MINIO_ROOT_PASSWORD=${MINIO_SECRET_ACCESS_KEY} - MINIO_STORAGE_USE_HTTPS=false command: server /data --console-address ":9001" volumes: - minio_data:/data minio-setup: image: quay.io/minio/mc depends_on: - minio volumes: - ./minio/create-bucket.sh:/create-bucket.sh entrypoint: /bin/sh command: -c "chmod +x /create-bucket.sh && /create-bucket.sh" environment: - MINIO_ROOT_USER=${MINIO_ACCESS_KEY} - MINIO_ROOT_PASSWORD=${MINIO_SECRET_ACCESS_KEY} mlflow: restart: always build: ./mlflow image: mlflow_server container_name: mlflow_server ports: - "5001:5000" environment: - AWS_ACCESS_KEY_ID=${MINIO_ACCESS_KEY} - AWS_SECRET_ACCESS_KEY=${MINIO_SECRET_ACCESS_KEY} - MLFLOW_S3_ENDPOINT_URL=${MLFLOW_S3_ENDPOINT} - MLFLOW_S3_IGNORE_TLS=true command: > mlflow server --backend-store-uri postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@localhost/mlflow --host 0.0.0.0 --serve-artifacts --artifacts-destination s3://mlflow depends_on: postgres: condition: service_healthy minio-setup: condition: service_completed_successfully volumes: postgres_data: minio_data: