Sobes.tech
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 файлы для управления переменными окружения и как применять профили для запуска разных наборов сервисов.