🐳 Как завернуть в Docker приложение Django в Ubuntu / Debian / CentOS

by itisgood

В этом руководстве я покажу вам, как настроить среду Docker для вашего проекта Django, когда он еще находится на стадии разработки.

Хотя я использую Ubuntu 18.04, шаги остаются неизменными для любого дистрибутива Linux, который вы используете, за исключением установки Docker и docker-compose.

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

Мы постараемся придерживаться правил, чтобы вы понимали, куда приходят все инструменты DevOps.

DevOps полностью исключает фразу прошлых лет; «Но это работает на моем ноутбуке!». Контейнерная обработка Docker создает производственную среду для вашего приложения, так что его можно развернуть где угодно, один раз разработать, развернуть где угодно!

Установите Docker Engine

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

Наши руководства по установке Docker должны быть очень полезны.

Как установить Docker на CentOS / Debian / Ubuntu:

Настройка окружаения

Я настроил репозиторий GitHub для этого проекта под названием django-docker-dev-app.

Не стесняйтесь форкать или клонировать / скачать.

Сначала создайте папку для хранения вашего проекта.
Моя рабочая папка называется django-docker-dev-app.
Перейдите в папку, а затем откройте его в вашей IDE.

Dockerfile

В контейнерной среде все приложения находятся в контейнере.

Сами контейнеры состоят из нескольких образов.

Вы можете создать свой собственный образ или использовать другие образа из Docker Hub.

Dockerfile – это текстовый документ Docker, который Docker читает для автоматического создания / построения образов.

Наш Dockerfile перечислит все зависимости, требуемые нашим проектом.

$ nano Dockerfile
В файле введите следующее:
#base image
FROM python:3.7-alpine

#maintainer
LABEL Author="CodeGenes"

# The enviroment variable ensures that the python output is set straight
# to the terminal with out buffering it first
ENV PYTHONBUFFERED 1

#copy requirements file to image 
COPY ./requirements.txt /requirements.txt

#let pip install required packages
RUN pip install -r requirements.txt

#directory to store app source code
RUN mkdir /app

#switch to /app directory so that everything runs from here
WORKDIR /app

#copy the app code to image working directory
COPY ./app /app

#create user to run the app(it is not recommended to use root)
#we create user called user with -D -> meaning no need for home directory
RUN adduser -D user

#switch from root to user to run our app
USER user
Создайте файл requirements.txt  и добавьте требования к своим проектам.
Django>=2.1.3,<2.2.0
djangorestframework>=3.9.0,<3.10.0
Создайте папку приложения, в которой будет находиться исходный код. Теперь мы готовы собрать наш образ!
$ mkdir app
Откройте терминал в вашем проекте и введите следующую команду, чтобы собрать наш образ:
 $ docker build .
Точка в конце указывает, что Docker проверяет наличие Dockerfile в том же каталоге, если бы у вас был файл в другом месте, мы бы написали путь к этому файлу.
Затем Docker вызовет необходимые образа из Docker Hub для создания вашего образа.

Использование Docker Compose

Compose – это инструмент для определения и запуска многоконтейнерных приложений Docker.

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

Затем с помощью одной команды вы создаете и запускаете все службы из вашей конфигурации.

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

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

Мы создадим файл docker-compose, который определит различные сервисы и контейнеры, которые потребуются нашему проекту.

Создайте файл с именем docker-compose.yml
version: "3"
services:
  ddda:
    build:
      context: .
    ports:
      - "8000:8000"
    volumes:
      - ./app:/app
    command: >
      sh -c "python manage.py runserver 0.0.0.0:8000"

Обратите внимание на формат файла YAML !!! У нас есть один сервис под названием ddda (Django Docker Dev App).

Теперь мы готовы собрать наш сервис:

 $ docker-compose build

После успешной сборки вы видите: Successfully tagged djangodockerdevapp_ddda:latest

Это означает, что наш образ называется djangodockerdevapp_ddda: latest, а наш сервис называется ddda.

Теперь обратите внимание, что мы еще не создали наш проект Django!

Если вы успешно выполнили вышеуказанную процедуру, то поздравляю, вы установили среду Docker для своего проекта !.

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

Создайте проект Django:

 $ docker-compose run ddda sh -c “django-admin.py startproject app .”

Для запуска вашего контейнера:

$ docker-compose up

Затем посетите http://localhost:8000/

Сделайте миграции

$ docker-compose exec ddda python manage.py migrate

Отныне вы будете запускать команды Django, такие как команда выше, добавляя вашу команду после имени службы ddda.

Вот и все пока. Я знаю это просто, и есть много функций, которые мы не рассмотрели, такие как база данных, но это только начало!

 

You may also like

Leave a Comment