Ваша основная система
Подсистема Linux
Дистрибутив Linux
Контейнеризация
Фреймворк Python
Без переустановки системы, без виртуальных машин
Чистая установка через bash, без Docker Desktop
Свой проект в контейнере за 5 минут
Это руководство написано для новичков. Все команды проверены и работают.
Если что-то не получается - скопируйте ошибку и проверьте решение в следующем слайде.
Windows Subsystem for Linux 2 (WSL2) - это полноценная подсистема Linux, интегрированная в Windows.
Практически нет накладных расходов
Все команды bash, apt, ssh, git
Доступ к файлам Windows из Linux
Работает с VS Code, Docker, Python
Нажмите Win + R, введите winver
# Должна быть версия:
# Windows 10: 2004 (19041) или выше
# Windows 11: любая версия
Откройте PowerShell от имени администратора:
# Запустите эти команды в PowerShell
wsl --install
Эта команда автоматически установит WSL2 и Ubuntu
# Включение компонентов вручную
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Перезагрузите компьютер после выполнения команд
# Установите WSL2 как версию по умолчанию
wsl --set-default-version 2
# Проверьте версию WSL
wsl --version
# Должно вывести:
# WSL version: 2.0.9.0
# Kernel version: 5.15.90.1
# WSLg version: 1.0.51
Скачайте и установите пакет обновления ядра по ссылке выше.
Обновите Windows до последней версии или установите WSL вручную через "Включение компонентов Windows".
Включите виртуализацию в BIOS/UEFI (Intel VT-x или AMD-V).
Больше всего документации и решений проблем
Все нужные пакеты доступны через apt
Легко найти помощь в решении проблем
LTS версии поддерживаются 5 лет
Откройте Microsoft Store и найдите "Ubuntu":
В поиске Microsoft Store введите "Ubuntu"
Выберите "Ubuntu 22.04 LTS" (не Ubuntu 20.04 или 24.04)
Нажмите "Получить" → "Установить"
# Установите Ubuntu через PowerShell
wsl --install -d Ubuntu-22.04
После установки запустите Ubuntu из меню "Пуск" или выполните:
# Запуск Ubuntu
wsl
# Обновите список пакетов
sudo apt update
# Обновите установленные пакеты
sudo apt upgrade -y
# Установите базовые утилиты
sudo apt install -y curl wget git vim nano
# Перейдите в домашнюю директорию
cd ~
# Создайте папку для проектов
mkdir -p projects/django
# Проверьте доступ к Windows файлам
ls /mnt/c/Users/ВашеИмяПользователяWindows/
# Настройте имя пользователя и email для Git
git config --global user.name "Ваше Имя"
git config --global user.email "ваш.email@example.com"
# Сохраните пароли в кэше
git config --global credential.helper store
# Проверьте настройки
git config --list
# Откройте файл .bashrc
nano ~/.bashrc
# Добавьте в конец файла:
alias ll='ls -la'
alias ..='cd ..'
alias ...='cd ../..'
alias python='python3'
alias pip='pip3'
# Сохраните изменения (Ctrl+X, Y, Enter)
# Примените изменения:
source ~/.bashrc
Все диски Windows доступны в /mnt/c/, /mnt/d/ и т.д.
Установите расширение "Remote - WSL" для работы из VS Code
Порты в WSL автоматически пробрасываются в Windows
wsl --list --verbose
Список установленных дистрибутивов
wsl --shutdown
Полное отключение WSL
wsl -d Ubuntu-22.04
Запуск конкретного дистрибутива
explorer.exe .
Открыть текущую папку в Windows
# Удалите старые версии Docker
sudo apt remove docker docker-engine docker.io containerd runc -y
sudo apt autoremove -y
# Обновите пакеты
sudo apt update
# Установите необходимые пакеты
sudo apt install -y \
ca-certificates \
curl \
gnupg \
lsb-release
# Создайте папку для ключей
sudo mkdir -p /etc/apt/keyrings
# Скачайте и добавьте ключ Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Добавьте репозиторий Docker
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Обновите список пакетов
sudo apt update
# Установите Docker Engine
sudo apt install -y docker-ce docker-ce-cli containerd.io
# Проверьте установку
docker --version
Docker version 24.0.7, build afdd53b
По умолчанию Docker требует sudo. Исправим это:
# Добавьте текущего пользователя в группу docker
sudo usermod -aG docker $USER
# Примените изменения группы (нужен перезаход)
newgrp docker
# Проверьте, что docker работает без sudo
docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
# Включите автозапуск Docker
sudo systemctl enable docker
# Но WSL2 не использует systemd по умолчанию
# Решение: добавить запуск в .bashrc
echo "# Start Docker daemon automatically when logging in if not running." >> ~/.bashrc
echo 'RUNNING=`ps aux | grep dockerd | grep -v grep`' >> ~/.bashrc
echo 'if [ -z "$RUNNING" ]; then' >> ~/.bashrc
echo ' sudo dockerd > /dev/null 2>&1 &' >> ~/.bashrc
echo ' disown' >> ~/.bashrc
echo 'fi' >> ~/.bashrc
# Примените изменения
source ~/.bashrc
# Проверьте версию Docker
docker --version
# Проверьте версию Docker Compose
docker compose version
# Запустите тестовый контейнер
docker run --rm hello-world
# Docker Compose обычно устанавливается с Docker Engine
# Если нет - установите отдельно:
sudo apt install -y docker-compose
# Или используйте новую версию:
sudo apt install -y docker-compose-plugin
# Создайте конфигурацию для WSL2
sudo tee /etc/docker/daemon.json > /dev/null <
docker ps
Список запущенных контейнеров
docker ps -a
Список всех контейнеров
docker run -d nginx
Запустить контейнер в фоне
docker stop имя_контейнера
Остановить контейнер
docker rm имя_контейнера
Удалить контейнер
docker images
Список образов
docker pull ubuntu
Скачать образ
docker rmi имя_образа
Удалить образ
docker build -t имя .
Собрать образ из Dockerfile
docker logs имя_контейнера
Показать логи контейнера
docker stats
Статистика контейнеров
docker exec -it имя_контейнера bash
Войти в контейнер
# Запустите тестовый контейнер Nginx
docker run -d -p 8080:80 --name test-nginx nginx
После запуска откройте в браузере: http://localhost:8080
Должна появиться страница "Welcome to nginx!"
Управление несколькими контейнерами
docker-compose.yml
Ваш проект Django магазина
https://github.com/ваш-логин/django-shop
# Используем официальный Python образ
FROM python:3.11-slim
# Устанавливаем системные зависимости
RUN apt-get update \
&& apt-get install -y \
gcc \
libpq-dev \
&& rm -rf /var/lib/apt/lists/*
# Устанавливаем рабочую директорию
WORKDIR /app
# Копируем зависимости
COPY requirements.txt .
# Устанавливаем Python зависимости
RUN pip install --no-cache-dir -r requirements.txt
# Копируем проект
COPY . .
# Создаем статику
RUN python manage.py collectstatic --noinput
# Открываем порт 8000
EXPOSE 8000
# Запускаем сервер
CMD ["gunicorn", "config.wsgi:application", "--bind", "0.0.0.0:8000"]
version: '3.8'
services:
db:
image: postgres:15
volumes:
- postgres_data:/var/lib/postgresql/data/
environment:
- POSTGRES_DB=django_shop
- POSTGRES_USER=django_user
- POSTGRES_PASSWORD=secret_password
restart: always
web:
build: .
command: >
sh -c "python manage.py migrate &&
python manage.py runserver 0.0.0.0:8000"
volumes:
- .:/app
- static_volume:/app/static
- media_volume:/app/media
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgres://django_user:secret_password@db:5432/django_shop
- DEBUG=True
depends_on:
- db
restart: always
volumes:
postgres_data:
static_volume:
media_volume:
Django>=5.0,<6.0
gunicorn>=20.0,<22.0
psycopg2-binary>=2.9,<3.0
pillow>=10.0,<11.0
django-environ>=0.10,<0.11
# Для разработки
ipython>=8.0,<9.0
django-debug-toolbar>=4.0,<5.0
import os
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
SECRET_KEY = os.environ.get('SECRET_KEY', 'your-secret-key-here')
DEBUG = os.environ.get('DEBUG', 'False') == 'True'
ALLOWED_HOSTS = ['localhost', '127.0.0.1']
# Настройки базы данных для Docker
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.environ.get('POSTGRES_DB', 'django_shop'),
'USER': os.environ.get('POSTGRES_USER', 'django_user'),
'PASSWORD': os.environ.get('POSTGRES_PASSWORD', 'secret_password'),
'HOST': os.environ.get('POSTGRES_HOST', 'db'),
'PORT': os.environ.get('POSTGRES_PORT', '5432'),
}
}
# Статические файлы
STATIC_URL = '/static/'
STATIC_ROOT = '/app/static'
# Медиа файлы
MEDIA_URL = '/media/'
MEDIA_ROOT = '/app/media'
# Перейдите в папку проектов
cd ~/projects/django
# Клонируйте ваш репозиторий
git clone https://github.com/ваш-логин/django-shop.git
cd django-shop
# Соберите образы и запустите контейнеры
docker-compose up --build -d
# Проверьте статус
docker-compose ps
# Следите за логами
docker-compose logs -f web
# Выполните миграции
docker-compose exec web python manage.py migrate
# Создайте суперпользователя
docker-compose exec web python manage.py createsuperuser
# Загрузите фикстуры (если есть)
docker-compose exec web python manage.py loaddata фикстуры.json
Откройте в браузере:
#!/bin/bash
# Скрипт для быстрого развертывания Django в Docker
echo "🚀 Начинаем развертывание Django проекта..."
# 1. Клонирование проекта
git clone https://github.com/ваш-логин/django-shop.git
cd django-shop
# 2. Проверка Docker Compose
if ! command -v docker-compose &> /dev/null; then
echo "❌ Docker Compose не установлен"
exit 1
fi
# 3. Сборка и запуск
echo "🏗️ Собираем образы..."
docker-compose build
echo "🚀 Запускаем контейнеры..."
docker-compose up -d
# 4. Миграции
echo "🗄️ Применяем миграции..."
sleep 10 # Ждем запуска БД
docker-compose exec web python manage.py migrate
# 5. Статика
echo "📦 Собираем статику..."
docker-compose exec web python manage.py collectstatic --noinput
echo "✅ Готово! Проект запущен на http://localhost:8000"
echo "📊 Проверьте логи: docker-compose logs -f"
Соберите полную конфигурацию для запуска Django проекта в Docker.
Цель: Создать 4 ключевых файла для развертывания
Перетащите сюда блоки кода из списка
Все файлы собраны правильно!
Все файлы для быстрого старта
django-docker-template/
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── .env.example
├── .dockerignore
├── deploy.sh
├── nginx/
│ └── nginx.conf
├── config/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── README.md
Установка и настройка Linux подсистемы
Работа с терминалом Linux
Установка и управление контейнерами
Контейнеризация веб-приложений
Многоступенчатая сборка, кэширование
Настройка репликации, бэкапы
Автоматическое развертывание
Вы освоили полный цикл развертывания Django на Windows через WSL2 и Docker!