Junior
98
questionbank
Какой у вас опыт работы с Docker Compose?
Ответ от нейросети
sobes.tech AI
Docker Compose использую для определения и запуска многоконтейнерных приложений. Опыт включает:
- Разработка локальной среды: Создание
docker-compose.ymlдля запуска всех необходимых сервисов (backend, frontend, база данных, кэш) для локальной разработки. Это позволяет быстро поднять окружение, изолированное от основной системы. - Тестирование: Использование Docker Compose для создания тестовых сред с различными конфигурациями сервисов.
- Развертывание на Staging/Production: Хотя для Production часто используются более мощные оркестраторы (Kubernetes), на ранних стадиях или для небольших проектов применял Docker Compose для развертывания на Staging-серверах.
Примеры использования полей в docker-compose.yml:
services: Определение набора контейнеров.image: Указание используемого образа Docker.build: Сборка образа из Dockerfile.ports: Маппинг портов.volumes: Монтирование томов для сохранения данных или монтирования исходного кода.networks: Определение пользовательских сетей.depends_on: Установка зависимостей между сервисами.environment: Передача переменных окружения в контейнер.
Пример простой конфигурации для веб-приложения и базы данных:
services:
webapp:
build: ./webapp # Сборка из Dockerfile в каталоге webapp
ports:
- "80:80" # Маппинг порта 80 хоста на порт 80 контейнера
environment:
DATABASE_URL: postgresql://user:password@db:5432/mydb # Передача переменной окружения
depends_on:
- db # Веб-приложение зависит от базы данных
db:
image: postgres:13 # Использование образа PostgreSQL
volumes:
- db_data:/var/lib/postgresql/data # Сохранение данных базы данных
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydb
volumes:
db_data: # Определение именованного тома
Типовые команды:
docker compose up -d # Запуск сервисов в фоновом режиме
docker compose down # Остановка и удаление сервисов
docker compose build # Сборка образов
docker compose logs <service_name> # Просмотр логов конкретного сервиса
docker compose exec <service_name> <command> # Выполнение команды внутри контейнера
Знаком с версиями синтаксиса Compose и их отличиями. Понимаю, как использовать .env файлы для управления переменными окружения и как применять профили для запуска разных наборов сервисов.