Это может быть 4 июля, но я не собираюсь заканчивать сегодня без развертывания!

Контейнеры, изображения, файлы Docker, о боже!

Давайте перейдем к делу: вы только что закончили свою модель и нуждаетесь в ее развертывании, так что приступим к делу. Что такое Docker и зачем он нам? Docker - это стандарт де-факто для создания контейнерных приложений и обмена ими. Docker позволяет быстро развернуть код и значительно сократить задержку между написанием кода и его запуском в производственной среде. После того, как ваша команда разработала приложение / модель, следующим этапом является развертывание, конечным результатом которого является служба или приложение в производственной среде, к которой ваши клиенты могут получить доступ.

Итак, в следующие 9 минут я расскажу о Docker для развертывания приложений.

Во-первых, давайте рассмотрим термины… .Docker Objects

Контейнер. Контейнер - это исполняемый экземпляр изображения.

Образ Docker. Образ Docker - это шаблон только для чтения, который позволяет создавать работоспособный экземпляр приложения, в частности образ Docker обеспечивает среду выполнения для приложения, любой важный код, файлы конфигурации и т. д. и зависимости, которые используются для раскрутки контейнера.

Dockerfile. Dockerfile - это простой набор инструкций, используемых для создания образа Docker.

А теперь давайте соберем все это воедино.

Чтобы создать Dockerfile, используйте эти предопределенные инструкции:

FROM -        to set the base image
RUN -         to execute a command
COPY & ADD  - to copy files from host to the container
CMD -         to set the default command to execute when the container starts
EXPOSE -      to expose an application port

Ниже приведен пример файла Dockerfile, предназначенного для упаковки приложения на Python (репозиторий см. Здесь):

# Simple Docker that aims to package a simple Python application (this same code will be use for the Fourthbrain.com Capstone deployment day July 8th, 2021).
# The first instruction is FROM:  which specifies the base image as being Python in version 3.8
FROM python:3.8

# Set and define the working directory which feature commands will be executed from /app
WORKDIR /app

# Copy will add the current directory contents into the container file system at /app
COPY . /app

ENTRYPOINT [ "python3" ]

# This file contains all the dependencies and libraries that your Python application requires to execute successfully.
RUN pip3 install -r requirements.txt

#Expose indicates the ports (in this case 8080) that the container should listen to for connections.
EXPOSE 8080

# The CMD command provides the command to run within the container when it starts.
# Run your application!
CMD ["run.py"]

После создания файла Dockerfile создайте образ.

Опять же, что такое образ Docker?

Образ Docker. Образ Docker - это шаблон только для чтения, который позволяет создавать работоспособный экземпляр приложения, в частности образ Docker обеспечивает среду выполнения для приложения, любой важный код, файлы конфигурации и т. д. и зависимости, которые используются для раскрутки контейнера.

Теперь запустите ваше приложение…

Две наиболее важные строки кода: 1-я, сборка образа и 2-я, для запуска приложения.

1-й - Создайте образ.

docker build -t app-basic .

2-й - Запустите контейнер и привяжите порт 8080 к локальному хосту вашей машины.

docker run -p 8080:8080 app-basic

Просыпайся, ты все еще со мной? Так же, как Изумруд говорит, как« Бац! »

Теперь, когда вы готовы к работе, перейдите по адресу http: // localhost: 8080 и просмотрите свое приложение в реальном времени.

После того, как вы протестировали это на своем компьютере, и оно запустилось - это означает, что вы в бизнесе, и успех приложения теперь подтвержден. Давайте оставим его в покое, прежде чем распространять образ Docker среди сверстников, крайне важно протестировать его локально и проверить, соответствует ли он ожидаемому поведению. Вы также можете сохранить образ Docker в реестр, но это другая тема для дальнейшего обсуждения.

Теперь давайте распределим его в облаке и развернем для распространения.

Развернуть в Amazon ECS

Затем загрузите папку своего приложения в экземпляр ECS и разверните приложение в AWS ECS.

Вывод

Итак, я изучил Docker для развертывания вашего приложения ML и стандартный шаблон для легкого выполнения. Спасибо Татьяне Чебоненко, которая объяснила мне это как 10-летнему, дважды - K.I.S.S. (прямо как в Военном) !

использованная литература

Все примечания в этом посте были взяты из различных источников и из приведенного ниже класса: https://www.udacity.com/course/cloud-native-application-architecture-nanodegree--nd064, если вас интересует Изучая развертывание, я настоятельно рекомендую вам пройти этот курс.

Справочные документы Dockerfile: https://docs.docker.com/engine/reference/builder/#from

Оставайся на связи, Linkedin!