Рубрики
Без рубрики

Выйдите из Virtualenv и используйте Docker

Начните использовать docker в среде разработки

Автор оригинала: Adriano Galello.

Не поймите меня неправильно, мне очень нравится virtualenv, и это довольно полезно в некоторых сценариях. Но иногда вам приходится иметь дело с зависимостями ОС, и это заставляет вас устанавливать новые пакеты, и в некоторых сценариях это может быть немного запутанным.

Если вы еще не слышали о Docker (контейнерах), вы можете прочитать больше об этом по адресу https://www.tutorialspoint.com/docker/index.htm

Вы можете думать о docker как о микро-виртуальной машине без всех накладных расходов Виртуальной машины .

  1. Установите docker в вашей системе https://docs.docker.com/install/

  2. Клонируйте репо с помощью приложения, которое я создал для этого

  3. Разверните контейнер и получите к нему доступ с помощью следующей команды на вашем терминале

  4. Установите наши требования к приложениям python

  5. Запустите приложение

  6. Попробуйте получить доступ к нашему приложению из-за пределов контейнера, открыв новый терминал

Он должен вернуть Привет 6. Вы также можете проверить, работает ли контейнер с помощью docker ps . Эта команда выведет список всех запущенных контейнеров.

```
CONTAINER ID  IMAGE       COMMAND  CREATED         STATUS         PORTS                   NAMES
989f00e4a7fc  python:3.6  "bash"   50 seconds ago  Up 10 seconds  0.0.0.0:8080->5000/tcp  myPythonContainer
```
  1. Отлично!, теперь вернитесь к терминалу, где у вас есть контейнер, и закройте его. Сначала ctrl+c для завершения процесса python, а затем введите exit для выхода из контейнера

  2. Вы можете проверить, что контейнер больше не работает, введя

Вот видео для этих шагов

Часть 1

asciicast

Часть 2

asciicast

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

Почему?

Создав пользовательский образ, мы можем иметь готовый контейнер со всем необходимым для запуска нашего приложения, а также задать команду для запуска при запуске нашего контейнера.

Во-первых, давайте создадим файл с именем Dockerfile в папке нашего приложения

# Our custom new image is based on a public image of python 3.6
FROM python:3.6
# create the directory /code and set it as the working directory
WORKDIR /code
# Copy the files to the docker folder /code
COPY . /code
# Install the python packages that we need
RUN pip install -r requirements.txt
# Define what command should be executed when this container starts
ENTRYPOINT ["python", "/code/main.py"]

Теперь нам нужно построить образ:

docker build -t mydockerimage:latest .

Он выведет что-то вроде этого:

Sending build context to Docker daemon  4.096kB
Step 1/5 : FROM python:3.6
 ---> 1daf62e8cab5
Step 2/5 : WORKDIR /code
 ---> Using cache
 ---> 246ac5eb5a44
Step 3/5 : COPY . /code
 ---> Using cache
 ---> 8ab217175a34
Step 4/5 : RUN pip install -r requirements.txt
 ---> Using cache
 ---> ff9500f71963
Step 5/5 : ENTRYPOINT ["python", "/code/main.py"]
 ---> Using cache
 ---> 8f765333673a
Successfully built 8f765333673a
Successfully tagged mydockerimage:latest

Флаг -t указывает докеру на создание образа с именем myDockerImage , : указывает версию для нашего образа (вы также можете использовать v1.1, v1.2,… например) и . указывает, что файл Dockerfile находится в текущем каталоге.

Теперь в этом изображении есть все, что нам нужно для продолжения разработки нашего приложения.

Давайте снова запустим контейнер:

  1. Во-первых, удалите старый контейнер. Хотя мы уже существовали, и он не работает, все еще есть контейнер с именем my Python Container , и вам нужно удалить его, чтобы запустить новый с тем же именем.

    эта команда перечислит все контейнеры, даже те, которые завершены:

  2. Запустите наш новый контейнер

    Обратите внимание на изменения в этой команде по сравнению с первой, которую мы использовали для запуска нашего первого контейнера:

    • Вы увидите ответ с идентификатором 5d82484a63134dc911e8d2184a881950817b5d8bd07d7a64e1ee1b8207394ef9 это идентификатор вашего контейнера, и он указывает, что он был запущен.
    • Не использовать -it . Мы используем -d , это означает, что мы запускаем контейнер в фоновом режиме.
    • Не используя изображение python:3.6 , мы теперь используем наш новый пользовательский образ мой образ docker
    • Больше не используйте явную команду. Это потому, что мы уже установили это в нашем файле Dockerfile в строке ENTRYPOINT ["python", "/code/main.py"]
  3. Одна вещь, которую вы можете заметить, заключается в том, что мы больше не видим, что происходит внутри контейнера. Чтобы иметь возможность видеть, что происходит внутри докера, вы всегда можете использовать

  4. Откройте новый терминал и позвоните в нашу конечную точку

  5. Перейдите к терминалу, где работает docker logs-f my Python Container , и вы увидите только что сделанный вызов.

Видео

asciicast

Вот и все!, теперь вы можете использовать Docker во время разработки и сохранять свою ОС нетронутой.

Технологии Docker и других контейнеров основаны на LXC .

При запуске контейнера, как и виртуальной машины, вы можете выбрать, какую ОС вы хотите, и вы можете предварительно установить на нее программное обеспечение или использовать общедоступный образ, уже созданный другими.

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

Есть много преимуществ использования контейнеров в производственной среде, но я не собираюсь вдаваться в это в этом посте. Если вы хотите узнать об этом больше:

Фото Кредиты: Фото Кредиты: