Menjalankan MLflow 3.2.0 dengan PostgreSQL + MinIO Menggunakan Docker (Edisi 2025)

Pendahuluan: All-in-One MLOps Stack yang Anda Butuhkan di 2025

Jika Anda membangun pipeline ML di tahun 2025, kemungkinan Anda harus menggunakan banyak tools untuk pelacakan, penyimpanan, dan versioning. Bagaimana jika Anda bisa menjalankan MLflow, PostgreSQL, dan MinIO dalam satu file docker-compose.yml?

Artikel ini memberikan stack lengkap yang dibutuhkan untuk pelacakan model, penyimpanan artefak, dan menjalankan MLflow dalam mode produksi – semuanya dari nol.


Komponen

  • MLflow 3.2.0 — Untuk pelacakan eksperimen model
  • PostgreSQL 17.5 — Backend metadata store
  • MinIO — Penyimpanan artefak yang kompatibel dengan S3
  • Docker + Compose v3.8 — Orkestrasi container

Implemantasi pada File docker-compose.yml

Berikut contoh docker-compose.yml siap digunakan:

services:
  postgres:
    image: postgres:17.5
    container_name: mlflow_postgres
    restart: unless-stopped
    environment:
      POSTGRES_USER: mlflow
      POSTGRES_PASSWORD: mlflow_pass
      POSTGRES_DB: mlflow_db
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data
  minio:
    image: minio/minio:RELEASE.2025-07-23T15-54-02Z
    container_name: mlflow_minio
    restart: unless-stopped
    environment:
      MINIO_ROOT_USER: minio
      MINIO_ROOT_PASSWORD: minio_pass
    command: server /data --console-address ":9001"
    ports:
      - "9000:9000"
      - "9001:9001"
    volumes:
      - minio_data:/data
  mlflow:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: mlflow_server
    restart: unless-stopped
    depends_on:
      - postgres
      - minio
    environment:
      MLFLOW_TRACKING_URI: postgresql+psycopg://mlflow:mlflow_pass@postgres:5432/mlflow_db
      AWS_ACCESS_KEY_ID: minio
      AWS_SECRET_ACCESS_KEY: minio_pass
      MLFLOW_S3_ENDPOINT_URL: http://minio:9000
    command: >
      mlflow server
      --backend-store-uri postgresql+psycopg://mlflow:mlflow_pass@postgres:5432/mlflow_db
      --default-artifact-root s3://mlflow/
      --host 0.0.0.0
      --port 5000
    ports:
      - "5000:5000"
volumes:
  postgres_data:
  minio_data:
  mlflow_data:

Contoh Dockerfile untuk MLflow

Pastikan file ini ada di direktori yang sama dengan docker-compose.yml:

# Dockerfile
FROM ghcr.io/mlflow/mlflow:v3.2.0
RUN pip install --no-cache-dir "psycopg[binary]>=3.1,<3.2"

Cara Menjalankan

  1. Tempatkan kedua file (docker-compose.yml dan Dockerfile) di root proyek Anda.
  2. Jalankan perintah berikut di terminal:
docker-compose up --build -d

UI MLflow akan tersedia di:
http://localhost:5000

MLFlow User Interface
Gambar – MLFlow User Interface

Konsol UI MinIO di:
http://localhost:9001

Opsional: Membuat Bucket di MinIO

Sebelum menggunakan penyimpanan artefak S3, buat bucket bernama mlflow:

mc alias set local http://localhost:9000 minio minio_pass
mc mb local/mlflow

Kesimpulan: Kirim Lebih Cepat dengan Kekuatan MLOps

Setup plug-and-play ini membuat pengelolaan eksperimen ML, pelacakan hasil, dan penyimpanan artefak jadi lebih mudah tanpa harus mengandalkan cloud.
Di dunia yang bergerak cepat dengan AI dan MLOps, tumpukan lokal ini memberi Anda kebebasan untuk berinovasi dengan aman dan efisien.

Sebuah program edukasi yang disusun oleh Solusi247 untuk membangun talenta data Indonesia

Contact Us

Segitiga Emas Business Park
Jl. Prof. Dr. Satrio KAV 6, Setia Budi
Jakarta Selatan
P: +62 21 579 511 32
M: info@datalearns247.com