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

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

Не поймите меня неправильно, мне очень нравится Virtualenv И это довольно полезно в некоторых сценариях. Но иногда … Помечено с докером, Python, WebDev.

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

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

Вы можете думать о Docker как Micro VM Без всех накладных расходов Виртуальная машина Отказ

  1. Установите Docker на вашей системе https://docs.docker.com/install/
  2. Клонировать репо с приложением, которое я создал для этого

  3. Сверните контейнер и доступ к нему, используя следующую команду на вашем терминале

   docker run -it --name myPythonContainer --volume $(PWD):/code -p 8080:5000 python:3.6 bash
  1. Установите требования к приложению Python

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

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

Это должно вернуть Привет

  1. Вы также можете проверить контейнер, используя докер PS. . Эта команда будет перечислять все запущенные контейнера.

  2. Отлично! Теперь вернитесь к терминалу, где у вас есть контейнер и закрыть его. Первый Ctrl + C Чтобы выключить процесс Python, а затем введите Выход Чтобы выйти из контейнера

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

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

Часть 1.

Часть 2

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

Почему?

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

Во-первых, давайте создадим файл с именем 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 Флаг говорит Docker, чтобы создать изображение с именем MyDockerImage. , : Указывает версию для нашего изображения (вы также можете использовать V1.1, V1.2, … для EX.) И Отказ Указывает, что Dockerfile Файл находится в текущем каталоге.

Это изображение теперь имеет все, что нам нужно, чтобы продолжать развивать наше приложение.

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

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

    Эта команда будет перечислять весь контейнер, даже те, которые прекращаются:

```
docker rm myPythonContainer
```
  1. Запустите наш новый контейнер

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

    • Вы увидите ответ и ID, как 5d82484A63134DC911E8D2184A881950817B5D8BD07D7A64E1EE1B8207394EF9 Это идентификатор вашего контейнера, и он указывает на то, что он был запущен.
    • Не использует -Питать Отказ Мы используем -d , это означает, что мы запускаем контейнер на заднем плане.
    • Не используя изображение Python: 3.6 Теперь мы используем наш новый пользовательский образ MyDockerImage.
    • Не использовать явную команду больше. Это потому, что мы уже установили, что в нашем докерефиле в линии Выходная точка ["Python", "/code/main.py"]
  2. Одна вещь, которую вы можете заметить, это то, что мы больше не видим, что происходит внутри контейнера. Чтобы иметь возможность увидеть, что происходит внутри докера Вы всегда можете использовать

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

  4. Перейти к терминалу, где Docker logs -f mypythoncontainer работает, и вы увидите вызов, который вы только что сделали.

видео

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

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

Когда вы запускаете контейнер, как VM, вы можете выбрать, какую вы хотите, и вы можете предварительно установить программное обеспечение на него или использовать публичное изображение, уже созданное другими.

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

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

Фото кредиты: https://instagram.com/hikaique

Оригинал: “https://dev.to/gdi3d/quit-virtualenv-and-use-docker-298a”