无法dockerize mlflow

时间:2019-09-06 06:13:34

标签: docker mlflow

在dockerizing mlflow时,仅创建.trash 因为在mlflow ui中,由于“没有实验”而出现错误

dockerfile

FROM python:3.7.0

RUN pip install mlflow==1.0.0

WORKDIR /data

EXPOSE 5000

CMD mlflow server \
    --backend-store-uri /data/ \
    --default-artifact-root /data/ \
    --host 0.0.0.0

docker compose:

  mlflow:
    # builds track_ml Dockerfile
    build:
      context: ./mlflow_dockerfile
    expose: 
      - "5000"
    ports:
      - "5000:5000"
    volumes: 
      - ./data:/data

1 个答案:

答案 0 :(得分:3)

您可以使用这个来自mlflow-workshop的Dockerfile,它更加通用,并且支持不同的ENV进行调试并使用不同的版本。

默认情况下,它将把工件和文件存储在/ opt / mlflow中。可以定义以下变量:

MLFLOW_HOME (/opt/mlflow)
MLFLOW_VERSION (0.7.0)
SERVER_PORT (5000)
SERVER_HOST (0.0.0.0)
FILE_STORE (${MLFLOW_HOME}/fileStore)
ARTIFACT_STORE (${MLFLOW_HOME}/artifactStore)

Dockerfile

FROM python:3.7.0
LABEL maintainer="Albert Franzi"

ENV MLFLOW_HOME /opt/mlflow
ENV MLFLOW_VERSION 0.7.0
ENV SERVER_PORT 5000
ENV SERVER_HOST 0.0.0.0
ENV FILE_STORE ${MLFLOW_HOME}/fileStore
ENV ARTIFACT_STORE ${MLFLOW_HOME}/artifactStore

RUN pip install mlflow==${MLFLOW_VERSION} && \
    mkdir -p ${MLFLOW_HOME}/scripts && \
    mkdir -p ${FILE_STORE} && \
    mkdir -p ${ARTIFACT_STORE}

COPY scripts/run.sh ${MLFLOW_HOME}/scripts/run.sh
RUN chmod +x ${MLFLOW_HOME}/scripts/run.sh

EXPOSE ${SERVER_PORT}/tcp

VOLUME ["${MLFLOW_HOME}/scripts/", "${FILE_STORE}", "${ARTIFACT_STORE}"]

WORKDIR ${MLFLOW_HOME}

ENTRYPOINT ["./scripts/run.sh"]

scripts / run.sh

#!/bin/sh

mlflow server \
    --file-store $FILE_STORE \
    --default-artifact-root $ARTIFACT_STORE \
    --host $SERVER_HOST \
    --port $SERVER_PORT

启动MLFlow跟踪Docker

docker build -t my_mflow_image .
docker run -d -p 5000:5000 --name mlflow-tracking my_mflow_image

参加培训

  

由于我们的MLflow Tracking泊坞窗公开于5000,因此我们可以登录   通过设置环境变量MLFLOW_TRACKING_URI执行。

MLFLOW_TRACKING_URI=http://localhost:5000 python example.py

此外,最好在首次运行时删除- ./data:/data,进行不带挂载的调试,并根据您的需要挂载ENV中提到的建议路径以建议dockerfile。