Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Запуск Docker Compose
Docker Compose — это инструмент для определения и запуска многоконтейнерных Docker приложений. Давайте разберёмся, как его использовать на практике.
Основные команды
Запуск контейнеров в фоне:
docker compose up -d
Эта команда:
- Читает файл
docker-compose.yml - Создаёт необходимые сети и тома
- Запускает контейнеры в фоновом режиме (
-dфлаг)
Запуск с пересборкой образов:
docker compose up -d --build
Используется, когда вы изменили Dockerfile или зависимости.
Остановка контейнеров:
docker compose down
Останавливает и удаляет контейнеры (данные в томах сохраняются).
Удаление всего (включая тома и образы):
docker compose down -v --rmi all
Структура docker-compose.yml
Вот типичный пример для Python приложения с базой данных:
version: "3.9"
services:
web:
build: .
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgresql://user:password@db:5432/app_db
- DEBUG=true
depends_on:
- db
volumes:
- .:/app
command: uvicorn main:app --host 0.0.0.0
db:
image: postgres:15
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
- POSTGRES_DB=app_db
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
volumes:
postgres_data:
Полезные команды
Просмотр логов контейнеров:
docker compose logs -f web # Логи конкретного сервиса
docker compose logs -f # Логи всех сервисов
Выполнить команду в контейнере:
docker compose exec web python manage.py migrate
docker compose exec db psql -U user -d app_db
Перестроить образ без запуска:
docker compose build
Остановить только конкретный сервис:
docker compose stop web
Best Practices
- Используйте volumes для персистентности данных БД
- Определяйте environment переменные через
.envфайл - Не забывайте про depends_on для правильного порядка запуска
- Используйте health checks для контроля готовности сервисов
- Изолируйте сети для безопасности между сервисами
Пример с .env
# .env
DATABASE_URL=postgresql://user:password@db:5432/app_db
SECRET_KEY=your-secret-key
DEBUG=false
services:
web:
environment:
- DATABASE_URL=${DATABASE_URL}
- SECRET_KEY=${SECRET_KEY}
Запуск с переменными окружения автоматически загружается из .env файла.