Можно ли использовать Docker Compose с конфигурацией в формате JSON?

«Можно ли использовать Docker Compose с конфигурацией в формате JSON?» — вопрос из категории Docker, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, Docker Compose поддерживает конфигурацию в формате JSON, но это менее распространённый вариант по сравнению с YAML. Для использования JSON-файла необходимо:

  1. Использовать правильное имя файла: docker-compose.json
  2. Вызывать с явным указанием файла: docker compose -f docker-compose.json up

Пример docker-compose.json:

{
  "version": "3.8",
  "services": {
    "web": {
      "image": "nginx:alpine",
      "ports": ["80:80"]
    },
    "app": {
      "build": ".",
      "depends_on": ["db"]
    },
    "db": {
      "image": "postgres:15",
      "environment": {
        "POSTGRES_PASSWORD": "example"
      }
    }
  }
}

Ключевые отличия от YAML:

  • Синтаксис: JSON требует строгого соблюдения правил (двойные кавычки, запятые).
  • Читаемость: YAML часто считается более читаемым для человека из-за отсутствия лишних символов и поддержки комментариев (#), которых в JSON нет.
  • Экосистема: Подавляющее большинство примеров, документации и инструментов (например, для валидации) заточены под YAML.

На практике я использую YAML для всех проектов из-за лучшей поддерживаемости. JSON может быть полезен для случаев, когда конфигурация генерируется автоматически другим инструментом.