mlflow / Dockerfile
subhrajit-mohanty's picture
Update Dockerfile
c3f4590 verified
FROM python:3.11-slim
# Install system dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
wget \
gnupg \
curl \
ca-certificates \
sudo \
&& rm -rf /var/lib/apt/lists/*
# Create a non-root user
RUN useradd -ms /bin/bash mlflowuser && \
echo "mlflowuser ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/mlflowuser
# Install MinIO server and client
RUN wget https://dl.min.io/server/minio/release/linux-amd64/minio \
&& chmod +x minio \
&& mv minio /usr/local/bin/minio
RUN wget https://dl.min.io/client/mc/release/linux-amd64/mc \
&& chmod +x mc \
&& mv mc /usr/local/bin/mc
# Install MLflow and MinIO client library
RUN pip install --no-cache-dir \
mlflow>=3.1 \
boto3==1.37.25 \
psycopg2-binary==2.9.10 \
PyMySQL==1.1.0
# Set environment variables for MinIO
ENV MINIO_ROOT_USER=minioadmin
ENV MINIO_ROOT_PASSWORD=minioadmin
ENV MINIO_DOMAIN=hf.space
ENV AWS_ACCESS_KEY_ID=minioadmin
ENV AWS_SECRET_ACCESS_KEY=minioadmin
ENV MLFLOW_S3_ENDPOINT_URL=http://localhost:9000
ENV BUCKET_NAME=mlflow
# Create directories and set permissions
RUN mkdir -p /tmp/minio /tmp/mlflow && \
chown -R mlflowuser:mlflowuser /tmp && \
chmod -R 777 /tmp
# Create a home directory for mc config
RUN mkdir -p /home/mlflowuser/.mc && \
chown -R mlflowuser:mlflowuser /home/mlflowuser
# Switch to non-root user
USER mlflowuser
WORKDIR /home/mlflowuser
# Create a setup script
RUN echo '#!/bin/bash \n\
minio server /tmp/minio --console-address ":9001" & \n\
sleep 5 \n\
# Configure MinIO client and create bucket \n\
mc alias set myminio http://localhost:9000 ${MINIO_ROOT_USER} ${MINIO_ROOT_PASSWORD} \n\
mc mb myminio/${BUCKET_NAME} --ignore-existing \n\
# Start MLflow server with MinIO as artifact store \n\
mlflow server \
--backend-store-uri /tmp/mlflow \
--default-artifact-root s3://${BUCKET_NAME}/ \
--host 0.0.0.0 \
--port 7860 \
' > /home/mlflowuser/start.sh && chmod +x /home/mlflowuser/start.sh
# Expose ports
EXPOSE 7860 9000 9001
# Start services
CMD ["/home/mlflowuser/start.sh"]