FROM ubuntu:18.04 LABEL com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true LABEL com.amazonaws.sagemaker.capabilities.multi-models=true ARG MMS_VERSION=1.1.6 ENV SAGEMAKER_SERVING_MODULE sagemaker_mxnet_serving_container.serving:main ENV TEMP=/home/model-server/tmp # No interactive mode to install OpenCV ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update \ && apt-get install -y --no-install-recommends \ software-properties-common \ build-essential \ ca-certificates \ curl \ git \ openssh-client \ openssh-server \ vim \ wget \ python3-dev \ && ln -s -f /usr/bin/python3 /usr/bin/python \ && ln -s /usr/local/bin/pip3 /usr/bin/pip RUN apt-get install -y --no-install-recommends \ libgl1-mesa-glx \ libglib2.0-0 \ libopencv-dev \ libsm6 \ libxext6 \ libxrender-dev \ openjdk-8-jdk-headless \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # MXNet requires pip 19.3.1 due to being backwards compatible # with Python2 RUN cd /tmp && \ curl -O https://bootstrap.pypa.io/pip/3.6/get-pip.py && \ python get-pip.py 'pip==19.1' && rm get-pip.py RUN pip install --upgrade pip RUN pip install --no-cache mxnet==1.7.0.post1 \ multi-model-server==$MMS_VERSION COPY dist/sagemaker_mxnet_inference-*.tar.gz /sagemaker_mxnet_inference.tar.gz RUN pip install --no-cache-dir /sagemaker_mxnet_inference.tar.gz && \ rm /sagemaker_mxnet_inference.tar.gz # This is here to make our installed version of OpenCV work. # https://stackoverflow.com/questions/29274638/opencv-libdc1394-error-failed-to-initialize-libdc1394 RUN ln -s /dev/null /dev/raw1394 RUN useradd -m model-server \ && mkdir -p /home/model-server/tmp \ && chown -R model-server /home/model-server COPY artifacts/mms-entrypoint.py /usr/local/bin/dockerd-entrypoint.py COPY artifacts/config.properties /home/model-server RUN chmod +x /usr/local/bin/dockerd-entrypoint.py EXPOSE 8080 8081 ENTRYPOINT ["python", "/usr/local/bin/dockerd-entrypoint.py"] CMD ["multi-model-server", "--start", "--mms-config", "/home/model-server/config.properties"]