Полный справочник Docker-команд для Django-проектов


💡 Для кого: Python/Django-разработчики, DevOps, тимлиды
⏱️ Время чтения: 8 мин | 🔄 Последнее обновление: Май 2026

Docker давно стал стандартом для локальной разработки, но копировать команды из Stack Overflow каждый раз — неэффективно. В этой статье собраны все рабочие Docker-команды, необходимые для Django-проекта, с контекстом, примерами и лайфхаками для ежедневной разработки.


1. Предварительные требования

  • Docker Engine 24+ и Docker Compose v2+ (команда пишется без дефиса: docker compose)
  • Базовый Dockerfile и docker-compose.yml (пример ниже)
  • Файл .env с переменными окружения (DEBUG, SECRET_KEY, DB_* и т.д.)

2. Минимальный стек для Django

# Dockerfile
FROM python:3.12-slim
ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
# docker-compose.yml
services:
  web:
    build: .
    volumes:
      - .:/app
      - static_volume:/app/static
    ports: ["8000:8000"]
    env_file: .env
    depends_on: [db, redis]
    command: >
      sh -c "python manage.py migrate &&
             python manage.py collectstatic --noinput &&
             python manage.py runserver 0.0.0.0:8000"

  db:
    image: postgres:16-alpine
    volumes: [postgres_/var/lib/postgresql/data]
    environment:
      POSTGRES_DB: ${DB_NAME}
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASS}

  redis:
    image: redis:7-alpine

volumes:
  postgres_
  static_volume:

3. Базовые команды Docker & Compose

Команда Что делает Когда использовать
docker compose up -d Запуск всех сервисов в фоне Старт локального окружения
docker compose down Остановка + удаление контейнеров/сетей Полная очистка стека
docker compose down -v То же + удаление named volumes Сброс БД/кеша (⚠️ данные удалятся!)
docker compose ps Статус запущенных контейнеров Проверка, всё ли живо
docker compose logs -f web Логи сервиса web в реальном времени Отладка запуска, traceback'и
docker compose build Пересборка образов После изменения Dockerfile или requirements.txt
docker compose build --no-cache Сборка без кеша Когда зависимости не подтягиваются корректно
docker compose exec web bash Вход в контейнер web Ручные команды, отладка, проверки

🔹 Важно: В Docker Compose v2 команда пишется docker compose, а не docker-compose. Старый формат объявлен deprecated.


4. Django-специфичные команды (внутри контейнеров)

Все команды запускаются через docker compose exec web, чтобы не ломать изоляцию и использовать окружение контейнера.

# Миграции
docker compose exec web python manage.py makemigrations
docker compose exec web python manage.py migrate

# Статика
docker compose exec web python manage.py collectstatic --noinput

# Суперпользователь
docker compose exec web python manage.py createsuperuser

# Оболочка
docker compose exec web python manage.py shell
# или с django-extensions:
docker compose exec web python manage.py shell_plus

# Тесты
docker compose exec web python manage.py test
docker compose exec web pytest -xvs  # если используете pytest-django

# Консоль БД
docker compose exec db psql -U $DB_USER -d $DB_NAME
# или из веб-контейнера:
docker compose exec web python manage.py dbshell

💡 Почему exec, а не run?
run создаёт новый контейнер, exec использует уже запущенный. Для Django это важно: подключенные volume'ы, настроенные переменные окружения и сессии БД сохраняются.


5. One-liners и автоматизация

Создайте Makefile или используйте justfile для быстрого доступа:

.PHONY: up down migrate test logs shell rebuild

up:
    docker compose up -d

down:
    docker compose down

migrate:
    docker compose exec web python manage.py migrate

test:
    docker compose exec web pytest -x

logs:
    docker compose logs -f web

shell:
    docker compose exec web python manage.py shell

rebuild:
    docker compose build --no-cache && docker compose up -d

Теперь вместо docker compose exec ... пишите make migrate или just test.


6. Отладка и мониторинг

Задача Команда
Посмотреть процессы внутри контейнера docker compose top web
Ресурсы (CPU/RAM) docker compose stats
Очистить dangling images docker image prune -f
Проверить healthcheck docker inspect --format='{{.State.Health.Status}}' <container>
Запустить pdb в контейнере docker compose exec web python -m pdb manage.py runserver 0.0.0.0:8000
Перезапустить только один сервис docker compose restart web

Добавьте healthcheck в docker-compose.yml:

healthcheck:
  test: ["CMD", "python", "manage.py", "check"]
  interval: 30s
  timeout: 10s
  retries: 3

← Все публикации