Продвинутый Django 5 для продолжающих

Прогресс по курсу:  0/193

11.4 Контейнеризация Django и написание Dockerfile
2 из 2 шагов пройдено

За основу возьмем проект из модуля 10 "Инфраструктура кэширования в Django" данного курса, исходный код вы можете взять на GitHub - https://github.com/Permin0ff/htmx_books_cached


На данном этапе мы поменяем кеширование данного проекта, для этого в settings.py изменим метод кэширования на стандартный метод кэширования в Django:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
    }
}

Примечание: Кеширование с использованием Memcached в Docker мы добавим чуть позже.

 

Создание Dockerfile

Начнем с Dockerfile - это текстовый файл, который содержит инструкции о том, как будет создан docker-образ.


В Dockerfile используются нижеследующие директивы:

  • FROM: Директива устанавливает базовый образ, из которого будет построен контейнер Docker.
  • WORKDIR: Директива устанавливает рабочий каталог в созданном образе.
  • RUN: Директива выполняет команды в контейнере.
  • COPY: Директива копирует файлы из файловой системы в контейнер.
  • CMD: Директива устанавливает исполняемые команды в контейнере.


В корневом каталоге проекта создайте файл с именем Dockerfile без расширения файла:


Добавим в этот файл следующие команды:

# pull the official base image
FROM python:3.12.0-alpine

# set work directory
WORKDIR /usr/src/app

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# install dependencies
RUN pip install --upgrade pip 
COPY ./requirements.txt /usr/src/app
RUN pip install -r requirements.txt

# copy project
COPY . /usr/src/app

EXPOSE 8000

CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]


Разберем содержимое этого файла подробнее:

  • FROM python:3.12.0-alpine: Устанавливает базовый образ, из которого будет создан контейнер Docker.
  • WORKDIR /usr/src/app: Устанавливает рабочий каталог внутри контейнера в/usr/src/app.
  • ENV PYTHONDONTWRITEBYTECODE 1: Не позволяет Python копировать файлы .pyc в контейнер.
  • ENV PYTHONUNBUFFERED 1: Гарантирует, что вывод Python регистрируется в терминале, что позволяет отслеживать журналы Django в режиме реального времени.
  • RUN pip install --upgrade pip: Устанавливает и обновляет версию pip, которая находится в контейнере.
  • COPY ./requirements.txt /usr/src/app: Копирует requirements.txt файл в рабочий каталог в контейнере.
  • RUN pip install -r requirements.txt: Устанавливает все необходимые модули проекта для запуска в контейнере.
  • COPY . /usr/src/app: Копирует весь исходный код проекта в рабочий каталог в контейнере.
  • EXPOSE 8000: Предоставляет порт 8000 для доступа из других приложений.
  • CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]: Устанавливает исполняемые команды в контейнере.

 

Создание образа Docker

Чтобы создать образ Docker из файла Dockerfile, который мы создали выше, выполните следующую команду:

docker build --tag django_books:latest .
  • --tag Устанавливает тег для образа. Например, мы создаем образ Docker из python:3.12.0 у него есть тег alpine.
    В нашем образе Docker, latest это тег.
  • Точка . указывает на то, что Dockerfile находится в текущем рабочем каталоге.


Результат выполнения данной команды:


Чтобы перечислить все доступные образы на вашем компьютере, выполните следующую команду:

docker image ls


Также мы можем посмотреть наши образы используя Docker Desktop, перейдя в раздел Images:


Из приведенного выше списка мы видим созданный нами образ django_books.


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