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

Как развить свои приложения Python Docker быстрее

Docker имеет много преимуществ, которые облегчают развертывание приложений. Но процесс разработки Pytho … помечен с Python, Docker, Minerervices, Учебник.

Docker имеет много преимуществ, которые облегчают развертывание приложений. Но процесс разработки питона с докером может быть расстраивается медленным. Это потому, что тестирование вашего кода Python в Docker является настоящей болью.

К счастью, есть методика, которую вы можете использовать, чтобы сократить время, которое вы проводите тестирование. В этом уроке мы покажем вам, как использовать объемы докера и Runserver Docker, чтобы сделать разработку приложений Python Docker проще и быстрее.

(Если вы узел. JS Разработчик, см. Как развить свой узел. JS Docker Приложения быстрее .)

Как тома хоста и Runserver могут ускорить развитие Python

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

В результате вы в конечном итоге с рабочим процессом развития, который выглядит так:

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

И если ваша команда использует CI/CD, так что вы постоянно выполняете свой код через автоматические тесты? Вы собираетесь проводить еще больше времени, ожидая контейнера для восстановления.

Кодирование и ожидание и кодирование и ожидание не является рецептом для производительности разработчика – или разработчика счастья.

Но есть способ изменить код контейнера без необходимости восстановить его. Хитрость состоит в том, чтобы использовать громкость докера.

Объемы Host Sync Изменение файлов между локальной папкой хоста и контейнерной папкой. Если вы используете громкость хоста для монтажа кода, включенный в контейнер, любые изменения, которые вы делаете в свой код на вашем ноутбуке, автоматически появятся в контейнере. И, как вы увидите в следующем разделе, вы можете использовать пакет Runserver, чтобы автоматически перезапустить приложение без необходимости восстановления контейнера – методика, известная как «Live Reloading».

Результат: вместо того, чтобы тратить много времени, ожидающих ваших контейнеров, чтобы восстановить, ваша петля Code-Test-Debug практически мгновенно.

Пример: Использование объемов хоста и ругателя в Python Docker Development

Идея использования объема хоста для ускорения вашего кодирования Python может показаться немного пугающим, но это довольно просто.

Чтобы продемонстрировать это, давайте воспользуемся примером Python: Django-опросы , приложение базового опроса, которое является частью Django’s Вводное руководство Отказ Клонировать репо:

$git clone https://github.com/kelda/django-polls

РЕПО предполагает, что вы используете Docker Compose. Вы также можете использовать Blimp Наша сочиная альтернатива, которая чешутся до облака.

Вот файл Docker-Compose.yml для опросов Django:

version: '3'
services:
  web:
    build: .
    command:
      - sh
      - -c
      - "./wait-for-postgres.sh && python manage.py migrate ; python manage.py shell < init-db.py ; python manage.py runserver 0.0.0.0:8000"
    ports:
      - "8000:8000"
    depends_on:
      - db
    volumes:
      - ".:/code"
  db:
    image: "postgres:12"
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_USER=polls
      - POSTGRES_PASSWORD=polls
      - POSTGRES_DB=polls 

Этот файл рассказывает Docker загрузить контейнер, приложение Django и базу данных Postgres, где приложение хранит опрос. Он также говорит Docker, чтобы установить громкость хоста:

volumes:
    - ".:/code"

В результате Docker установит ./каталог на вашем ноутбуке, который содержит код, который вы разрабатываете, в контейнер в/код.

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

Если вы создаете приложение Django, самый простой способ сделать это, чтобы ваш файл .yml Скажите Docker использовать Runserver, веб-сервер Develope Django:

  web:
    build: .
    command:
      - sh
      - -c
      - "./wait-for-postgres.sh && python manage.py migrate ; python manage.py shell < init-db.py ; python manage.py runserver 0.0.0.0:8000"

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

Короче говоря, используя громкость хоста и Runserver, вы можете настроить контейнер вашего Python Application, чтобы он автоматически синхронизировал изменения кода между контейнером и вашим ноутбуком. Если вы этого не сделали, вам придется перестроить контейнер каждый раз, когда вы сделали изменение в свой код.

Со временем эта техника может существенно ускорить развитие Python. Например, мы слышали от пользователей, что это не редкость для перестройки контейнера, чтобы занять 5-30 минут. С томами хозяина и Runserver ваш код кода почти мгновенно. Представьте, какой у вас будет выглядеть ваш день, если вы можете сэкономить себя 5-30 минут каждый раз, когда вы изменяете и проверьте свой код.

Синхронизация собственного кода при разработке приложения Python

Теперь, когда вы видели, как использовать эту технику в примерном приложении, остальное в этом руководстве покажет вам, как включить синхронизацию кода в одном из существующих проектов Python.

Предварительные условия

Также как пример выше, ваш проект Python должен включать следующее:

  • Git Reppo, который содержит ваш код
  • Dockerfile, который создает этот код в рабочий контейнер
  • Файл docker-compose.yml, который вы используете для запуска этого контейнера

Как настроить контейнер для автоматического синхронизации вашего кода Python

1) Найдите папку в вашем контейнере Docker, который имеет ваш код Отказ Самый простой способ выяснить, где ваш код хранится в вашем контейнере, – это посмотреть на ваш DockerFile Скопировать команды. В примере опросов Django вы можете видеть из DockerFile, что контейнер ожидает, что код должен быть в/коде:

FROM python:3
RUN apt update && apt install -y netcat && rm -rf /var/lib/apt/lists/*
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install --no-cache-dir -r requirements.txt 

2) Найдите путь к папке на ноутбуке, который имеет тот же код Python Отказ

3) Добавьте громкость хоста в ваш файл Docker-Compose. Найдите контейнер в вашем файле Pocker-Compose, с которым вы хотите синхронизировать код, и добавьте A объем Инструкция под этим контейнером:

volumes:
  "/path-to-laptop-folder:/path-to-container-folder"

4) Убедитесь, что ваш файл Compose Docker настраивает ваш контейнер для Live Reloading Отказ В примере опроса Django вы реализовали его с помощью Runserver в качестве веб-сервера:

  web:
    build: .
    command:
      - sh
      - -c
      - "./wait-for-postgres.sh && python manage.py migrate ; python manage.py shell < init-db.py ; python manage.py runserver 0.0.0.0:8000"

5) Запустить Docker Compose или Blimp Отказ Теперь все, что вам нужно сделать, это либо запустить Docker-Compose:

$ docker-compose up

Или если вы используете Blimp :

$ blimp up

В результате Docker обновит код контейнера с кодом, который на вашем ноутбуке.

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

Заключение

Сначала идея использования объемов хоста для синхронизации кода Python на вашем ноутбуке с вашим контейнером может показаться немного странным. Но как только вы привыкли к этому рабочему процессу, вы увидите, насколько это эффективнее. Благодаря нескольким настройкам настроек Docker Containers, разработка вашего приложения Python Docker проще и быстрее.

Ресурсы

Попробуйте Пример Питона на Slimp

Читать Как развить свой узел. JS Docker Applications быстрее

Читайте о Общие ошибки с хостом Объемы это может замедлить ваше приложение

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

Оригинал: “https://dev.to/ethanjjackson/how-to-develop-your-python-docker-applications-faster-4d1c”