Это может быть 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!