В этом руководстве я покажу вам, как настроить среду 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.
Не стесняйтесь форкать или клонировать / скачать.
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
Django>=2.1.3,<2.2.0
djangorestframework>=3.9.0,<3.10.0
$ mkdir app
$ docker build .
Использование Docker Compose
Compose – это инструмент для определения и запуска многоконтейнерных приложений Docker.
С Compose вы используете файл YAML для настройки служб вашего приложения.
Затем с помощью одной команды вы создаете и запускаете все службы из вашей конфигурации.
- Установите Docker и Docker Compose в Linux Mint 19
- Как запускать контейнеры с помощью Docker Compose
- Установка и использование Docker Compose на Fedora 29 / Fedora 28
Поскольку в будущем нашему проекту потребуется много служб, для него лучше создать многоконтейнерную среду.
Например, нам может потребоваться контейнер для размещения нашего внешнего интерфейса, другой для размещения базы данных и другой для размещения внутреннего интерфейса при переходе на микросервисную архитектуру.
Мы создадим файл docker-compose, который определит различные сервисы и контейнеры, которые потребуются нашему проекту.
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.
Вот и все пока. Я знаю это просто, и есть много функций, которые мы не рассмотрели, такие как база данных, но это только начало!