В этой статье мы увидим, как подключить приложение Django Python.
Какое преимущество докеризации вашего приложения Python?
- Вы можете запустить приложение без установки Python.
- Нет версии столкновения на хосты с установленной другой версией Python.
- Не нужно устанавливать зависимости.
- Не нужно помнить, что это команда для запуска вашего приложения Python.
Последний может звучать тривиально для чистых разработчиков Python, но подумайте о большой системе, сделанной микросервисами и используя 3/4 разных языков с разными версиями.
Мы просто хотим Беги Наше приложение, и, вероятно, с разными командами для разработки и производства.
Питон
Соответственно для своего собственного определения Python – это язык программирования:
- высокий уровень
- интерпретировать
- общее назначение
Его дизайн подчеркивает читаемость кода с использованием значительных отступов (без запятых).
Его языковые конструкции, а также его объектно-ориентированный подход, целью помощи программистам написать четкий и логический код.
Django
Django – это веб-каркас Python высокого уровня. Это свободный и открытый источник.
Докер
Docker – это платформа для создания запуска и обмена приложениями, используя идею контейнеров.
Пошаговое руководство
Предпосылки:
- Установлен Python
- пипс установлен
- Докер установлен
Шаги:
- Проверьте предварительные условия
- Установите Django-Admin с Pip
- Создать приложение Django Hello World
- Запустите приложение Django локально (без Docker)
- Создание требований. atxt file.
- Создайте DockerFile, Docker-Compose.yml, .Dockerignore
- построить и запустить только одну команду
Проверьте предварительные условия
python --version
В некоторых случаях вам нужно добавить 3 в конце Python:
Убедитесь, что пипс установлен
pip --version
Убедитесь, что докер установлен
docker version
Установите Django-Admin с Pip
Установите Django-Admin, используя PIP
pip install django-admin
Создать приложение Django Hello World
Используйте Django-Admin, чтобы создать приложение Django, используя эту команду:
django-admin startproject python_docker
попасть в папку:
cd python_docker
И откройте его, используя свой любимый IDE. Например, если вы используете йосяческий студийный код, вы можете ввести
code .
И ваш проект должен выглядеть так:
Запустите приложение Django локально (без Docker)
Запустите свой проект Django локально без Docker, используя эту команду:
python manage.py runserver
(Замените на Python3, если у вас есть эта версия)
Теперь посетите Localhost: 8000 на вашем браузере:
Создание требований. atxt file.
Перед созданием образа Docker давайте создадим файл требований.txt для этого проекта.
Для простоты мы будем использовать команду pip замораживать и перенаправлять вывод в файл, называемый требованиями .txt
pip freeze -l > requirements.txt
Опция -l (короткая для –локаль) – установить только локальные зависимости.
Обратите внимание, что лучший способ сделать это – сначала создать виртуальную среду, вот ссылка https://docs.ython.org/3/library/venv.html.
Докер
Давайте начнем процесс контейнера для нашего приложения Python.
- Создать файл .dockerignore
- Создать dockerfile
- Создать docker-compose.yml файл
- Создайте и запустите сервис только с одной командой
- финальный тест
.dockerignore.
В той же папке создайте файл под названием .Dockerignore (начинается с точек)
Этот файл, таким образом, похожим на .gitignore, это игнорировать какой-то файл, когда мы будем копировать файлы внутри образа докера. Например, мы не хотим папку .git на нашем изображении, поэтому мы можем заполнить файл .dockerignore с
.git
Dockerfile
Теперь давайте создадим файл под названием DockerFile (Capital D).
Dockerfile – это простой, но мощный текстовый файл с форматом:
Ключевое значение
Ключевое значение
Ключевое значение
Давайте заполним следующее: Dockerfile, как это:
FROM python:3 ENV PYTHONUNBUFFERED=1 WORKDIR /code COPY requirements.txt . RUN pip install -r requirements.txt COPY . . EXPOSE 8000 CMD ["python","manage.py","runserver","0.0.0.0:8000"]
Давайте объясним линию по линии то, что здесь происходит:
Из Python: 3 От состоит в том, чтобы установить базовое изображение, в данном случае Python: 3 В среде готовой к производству мы можем использовать более мелкозернистую версию
Env Мы устанавливаем переменную среды с до 1. Установка Pythonunbufted в непустое значение, гарантирует, что выход Python отправляется прямо к терминалу, не будучи первым буферизацией, поэтому вы можете увидеть вывод вашего приложения в режиме реального времени.
Workdir/код Мы устанавливаем каталог по умолчанию для последующих команд копирования и CMD. Эта строка не является обязательной, но избегать приложения, находящегося на корневом уровне файловой системы Image Docker
Скопируйте требования. Atxt. Это будет скопировать файл требований .txt в папке, определенном как Workdir
Запустить pip install -r требования .txt Это установит зависимости Python внутри образа докера
Копировать. Отказ Эта команда будет скопировать все файлы и папки (входит доконфила) в файловой системе изображения. AL файлы и папки, включенные в файл .dockerignore, будут проигнорированы
Выставлять 8000 Эта команда состоит в том, чтобы сообщить Docker, что вы будете использовать порт 8000 в качестве внешней ноты. (Примечание. Эта команда не является обязательной, если вы публикуете порт при запуске контейнера)
CMD [«Python», «Manage.py», «Runserver», «0.0.0.0.0:8000»] Это установит команду по умолчанию для запуска при запуске контейнера на основе этого изображения. Это заменяет команду, которую мы использовали ранее, и она делает прозрачный для развертывания (вам не нужно запоминать, что была команда для запуска приложения Python)
Docker Compose и Docker-Compose.yml файл
Простой и удобный способ запустить приложение Hello World – использовать Docker Compose, даже если у нас есть просто небольшое приложение. В случае, если мы добавим базу данных или другую услугу позже, мы уже устанавливаемся!
Создайте Docker-Compose.yml-файл и заполните так:
version: "3.9" services: django: image: django-hello-world:0.0.1 build: . ports: - "8000:8000"
Здесь мы определяем:
- Один сервис (контейнер) под названием «Django»
- Сервис основан на изображении, называемом «Django-Hello-World: 0.0.1». Если это изображение недоступен локально, Docker построит его (не стесняйтесь переименовать это имя изображения)
- строить: . ума! Это путь, который мы используем для создания нашего изображения
- Порты: Здесь мы определяем порт, который мы хотим опубликовать.
Вот и все. Очень простой но это позволяет нам избежать длинной команды сборки Docker в командной строке
Структура вашей папки должна выглядеть так
Построить и запустить только одну команду
Теперь немного магии. Просто беги
docker compose up --build
Вариант –build – заставить воссоздать изображение, если он уже недоступен. Это не очень нужно в первый раз, поскольку изображение недоступно, но это полезно во время разработки, чтобы просто внести некоторые изменения и тестировать, если все работает контрольная работа
Теперь посетите 127.0.0.1:8000 (игнорируйте журнальное сообщение, оно может быть обманутым)
Спасибо за чтение, вы можете следовать за мной в Twitter здесь: https://twitter.com/intent/follow?screen_name=francescociull4.
Репозиторий GitHub https://github.com/francescoxx/python-docker.
Оригинал: “https://dev.to/francescoxx/dockerize-a-django-application-4fa”