Избегайте адской зависимости от docker - PullRequest
0 голосов
/ 28 апреля 2020

Я создаю приложение AI в Python, включающее в себя большое количество Python библиотек. На этом этапе я хотел бы запустить свое приложение внутри контейнера docker, чтобы приложение AI стало сервисом.

Какие у меня есть варианты относительно зависимости cie, чтобы все необходимые библиотеки загружались автоматически?

В качестве слабой альтернативы я пробовал это с " файл require.txt "на том же уровне, что и мой Docker файл сборки, но это не сработало.

Ответы [ 3 ]

2 голосов
/ 28 апреля 2020

Вашему Dockerfile потребуются инструкции для установки требований, например

COPY requirement.txt requirement.txt
RUN pip install -r requirement.txt
1 голос
/ 28 апреля 2020

Спасибо за очень полезные комментарии:

Мой dockerfile:

# Python 3.7.3
FROM python:3.7-slim

# Set the working directory to /app
WORKDIR /app
COPY greeter_server.py /app
COPY AspenTechClient.py /app
COPY OpcUa_pb2.py /app
COPY OpcUa_pb2_grpc.py /app
COPY helloworld_pb2.py /app
COPY helloworld_pb2_grpc.py /app
COPY Models.py /app

ADD ./requirement.txt /app


# Training & Validation data  we need 
RUN mkdir -p /app/output

RUN pip install -r requirement.txt
#RUN pip3 install grpcio grpcio-tools
#RUN pip install protobuf
#RUN pip install pandas
#RUN pip install scipy

#expose ports to outside container for web app access
EXPOSE 10500

# Argument to python command
CMD [ "python", "/app/greeter_server.py" ]

Советы здесь, я уже добавил дополнительные строки для "require.txt", и это работает как Шарм. Большое спасибо!

  • Поскольку я хочу запустить развертывание только в контейнере, я буду предвидеть обученные модели, поэтому нет необходимости в графическом процессоре. Для этого у меня есть локальная машина. С соответствующим креплением я доставляю .h5 в контейнер.

@ pyeR_biz: Большое спасибо за советы по трубопроводам. Это то, с чем у меня не было опыта, но я обязательно сделаю это в ближайшем будущем.

0 голосов
/ 28 апреля 2020

У вас есть несколько вариантов. Это во многом зависит от варианта использования, количества контейнеров, которые вы в конечном итоге создадите, от рабочей среды до среды разработки и т. Д. c.

Как правило, если у вас есть приложение AI, вам потребуется предварительно установленный драйвер видеокарты. на вашей хост-системе для обучения модели. Это означает, что в конечном итоге вам придется придумать способ автоматизации установки драйверов или написать инструкции для конечных пользователей. Для приложения вам также могут понадобиться драйверы базы данных в образе docker, если ваши внешние или внутренние базы данных находятся за пределами контейнера. Вот урезанный пример одного из моих вариантов использования с требованием построения docker для конвейера данных.

#Taken from puckel/docker-airflow
#can look up this image name on google to see which OS it is based on.
FROM python:3.6-slim-buster 
LABEL maintainer="batman"

# Never prompt the user for choices on installation/configuration of packages
ENV DEBIAN_FRONTEND noninteractive
ENV TERM linux

# Set some default configuration for data pipeline management tool called airflow
ARG AIRFLOW_VERSION=1.10.9
ARG AIRFLOW_USER_HOME=/usr/local/airflow
ARG AIRFLOW_DEPS=""
ENV AIRFLOW_HOME=${AIRFLOW_USER_HOME}

# here install some linux dependencies required to run the pipeline. 
# use apt-get install, apt-get auto-remove etc to reduce size of image
# curl and install sql server odbc driver for my linux
RUN set -ex \
    && buildDeps=' freetds-dev libkrb5-dev libsasl2-dev libssl-dev libffi-dev libpq-dev git' \
    && apt-get update -yqq \
    && apt-get upgrade -yqq \
    && apt-get install -yqq --no-install-recommends \
        $buildDeps freetds-bin build-essential default-libmysqlclient-dev \
        apt-utils curl rsync netcat locales gnupg wget \
    && useradd -ms /bin/bash -d ${AIRFLOW_USER_HOME} airflow \
    && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \ #
    && curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \
    && apt-get update \
    && ACCEPT_EULA=Y apt-get install -y msodbcsql17 \
    && ACCEPT_EULA=Y apt-get install -y mssql-tools \
    && pip install apache-airflow[crypto,celery,postgres,hive,jdbc,mysql,ssh${AIRFLOW_DEPS:+,}${AIRFLOW_DEPS}]==${AIRFLOW_VERSION} \
    && apt-get purge --auto-remove -yqq $buildDeps \
    && apt-get autoremove -yqq --purge \
    && apt-get clean \
    && rm -rf \
        /var/lib/apt/lists/* \
        /tmp/* \
        /var/tmp/* \
        /usr/share/man \
        /usr/share/doc \
        /usr/share/doc-base

# Install all required packages in python environment from requirements.txt (I generally remove version numbers if my python version are same)
ADD ./requirements.txt /config/
RUN pip install -r /config/requirements.txt


# CLEANUP
RUN apt-get autoremove -yqq --purge \
 && apt-get clean \
 && rm -rf \
    /var/lib/apt/lists/* \
    /tmp/* \
    /var/tmp/* \
    /usr/share/man \
    /usr/share/doc \
    /usr/share/doc-base


#CONFIGURATION
COPY script/entrypoint.sh /entrypoint.sh
COPY config/airflow.cfg ${AIRFLOW_USER_HOME}/airflow.cfg

# hand ownership of libraries to relevant user
RUN chown -R airflow: ${AIRFLOW_USER_HOME}

#expose ports to outside container for web app access
EXPOSE 8080 5555 8793

USER airflow
WORKDIR ${AIRFLOW_USER_HOME}
ENTRYPOINT ["/entrypoint.sh"]
CMD ["webserver"]

1) Выберите подходящий базовый образ с нужной вам операционной системой. 2) Установите драйверы GPU, если вы обучаете модель, не обязательно, если вы обслуживаете модель

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...