Ответ
Да, постоянно использую Docker Compose для локальной разработки, тестирования и развёртывания стека сервисов. Это основной инструмент для описания мультиконтейнерных приложений.
Пример docker-compose.yml для веб-приложения с бэкендом и БД:
version: '3.8'
services:
postgres:
image: postgres:15-alpine
environment:
POSTGRES_DB: appdb
POSTGRES_USER: appuser
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U appuser"]
interval: 10s
backend:
build: ./backend # Сборка из Dockerfile в указанной директории
environment:
DATABASE_URL: postgres://appuser:${DB_PASSWORD}@postgres:5432/appdb
depends_on:
postgres:
condition: service_healthy
ports:
- "8080:8080"
nginx:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- backend
volumes:
postgres_data:
Ключевые практики, которые я применяю:
- Использование
.env-файлов для управления переменными окружения. - Настройка
healthcheckдля корректного определения зависимостей (depends_on). - Определение именованных
volumesдля сохранения данных. - Запуск стека одной командой:
docker-compose up -d, остановка —docker-compose down -v.