Поддерживает ли Docker Compose конфигурационные файлы в формате JSON?

«Поддерживает ли Docker Compose конфигурационные файлы в формате JSON?» — вопрос из категории DevOps, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, Docker Compose поддерживает JSON-файлы конфигурации, но это не основной и не рекомендуемый формат. Стандартным и предпочтительным форматом является YAML (docker-compose.yml).

Как использовать JSON-файл: Для использования JSON-файла необходимо явно указать его с помощью флага -f (или --file).

  1. Пример файла docker-compose.json:
    {
      "version": "3.8",
      "services": {
        "web": {
          "image": "nginx:alpine",
          "ports": ["8080:80"],
          "restart": "unless-stopped"
        },
        "db": {
          "image": "postgres:13",
          "environment": ["POSTGRES_PASSWORD=secret"],
          "volumes": ["db_data:/var/lib/postgresql/data"]
        }
      },
      "volumes": {
        "db_data": {}
      }
    }
  2. Запуск с JSON-файлом:
    docker compose -f docker-compose.json up
    # Или для старой версии CLI:
    # docker-compose -f docker-compose.json up
Сравнение JSON и YAML для Docker Compose: Критерий YAML (.yml) JSON (.json)
Читаемость Высокая, менее загромождённый синтаксис Низкая, много кавычек и скобок
Комментарии Поддерживаются (# комментарий) Не поддерживаются
Многострочные строки Удобный синтаксис (|, >) Сложный, требует экранирования
Стандарт Основной и рекомендуемый Альтернативный, для специфических случаев

Вывод: Используйте JSON только если ваша конфигурация генерируется автоматически другим инструментом. Для ручного написания и поддержки всегда выбирайте YAML из-за его читаемости и возможности добавлять комментарии.