Введение
В этой лабораторной работе вы научитесь использовать команду docker-compose config для проверки и просмотра ваших Docker Compose файлов. Мы начнём с установки Docker Compose, а затем создадим базовый compose-файл.
Далее вы будете использовать команду docker-compose config для проверки синтаксиса compose-файла, просмотра итоговой конфигурации в форматах YAML и JSON, а также извлечения конкретной информации, такой как имена сервисов и образов. Эта лабораторная работа даст вам основные навыки для эффективной работы с Docker Compose файлами.
Проверка базового compose-файла
На этом шаге вы научитесь проверять базовый Docker Compose файл. Перед началом нам необходимо установить Docker Compose, так как он не предустановлен в данной среде.
Сначала загрузим бинарный файл Docker Compose. Мы скачаем версию 1.29.2 — стабильную и широко используемую.
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Эта команда загружает бинарный файл Docker Compose из официального репозитория GitHub и сохраняет его в /usr/local/bin/docker-compose. Части $(uname -s) и $(uname -m) автоматически определяют вашу операционную систему и архитектуру для загрузки правильной версии.
Далее необходимо дать загруженному файлу права на выполнение.
sudo chmod +x /usr/local/bin/docker-compose
Эта команда делает docker-compose исполняемым.
Теперь проверим установку, посмотрев версию.
docker-compose --version
Вы должны увидеть вывод, похожий на docker-compose version 1.29.2, build 5becea4c. Это подтверждает, что Docker Compose установлен корректно.
Теперь создадим простой Docker Compose файл. Создадим файл docker-compose.yml в вашей директории ~/project.
nano ~/project/docker-compose.yml
Добавим в файл следующее содержимое:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
Это очень простой Docker Compose файл. Он определяет один сервис web, использующий образ nginx:latest, и пробрасывает порт 80 хоста на порт 80 контейнера.
Сохраните файл и выйдите из редактора nano (нажмите Ctrl + X, затем Y, затем Enter).
Перед запуском compose-файла рекомендуется проверить его синтаксис. Docker Compose предоставляет для этого команду config.
docker-compose config
Если синтаксис вашего docker-compose.yml файла корректен, команда выведет итоговую конфигурацию в формате YAML. Если есть синтаксические ошибки, будет выведено сообщение с описанием проблемы. Это помогает выявить ошибки до попытки сборки или запуска сервисов.
Просмотр итоговой конфигурации в формате YAML
На предыдущем шаге мы проверили синтаксис файла docker-compose.yml с помощью команды docker-compose config. По умолчанию эта команда выводит итоговую конфигурацию в формате YAML. Это полезно для просмотра окончательной конфигурации, которую будет использовать Docker Compose, включая значения по умолчанию или объединение из нескольких compose-файлов.
Давайте снова выполним команду для просмотра вывода. Убедитесь, что находитесь в директории ~/project, где создавали файл docker-compose.yml.
cd ~/project
docker-compose config
Вы должны увидеть вывод, похожий на этот:
services:
web:
build:
context: /home/labex/project
image: nginx:latest
ports:
- published: 80
target: 80
version: "3.8"
Обратите внимание, что вывод включает раздел build с параметром context, установленным в /home/labex/project. Хотя мы явно не определяли раздел build в нашем docker-compose.yml, Docker Compose добавляет контекст сборки по умолчанию — директорию, содержащую compose-файл. Это пример того, как docker-compose config показывает итоговую конфигурацию, включая значения по умолчанию.
Просмотр итоговой конфигурации в формате YAML полезен для отладки и точного понимания того, как Docker Compose интерпретирует ваш файл.
Просмотр итоговой конфигурации в формате JSON
На предыдущем шаге мы увидели, как команда docker-compose config по умолчанию выводит итоговую конфигурацию в формате YAML. Иногда бывает полезно просмотреть конфигурацию в формате JSON, особенно при работе с инструментами или скриптами, обрабатывающими JSON.
Команда docker-compose config имеет флаг --format, позволяющий указать формат вывода. Для получения вывода в формате JSON используем --format json.
Убедитесь, что находитесь в директории ~/project.
cd ~/project
docker-compose config --format json
Вы должны увидеть итоговую конфигурацию, выведенную в консоль в формате JSON. Вывод будет выглядеть примерно так (точное форматирование может незначительно отличаться):
{
"services": {
"web": {
"build": {
"context": "/home/labex/project"
},
"image": "nginx:latest",
"ports": [
{
"published": 80,
"target": 80
}
]
}
},
"version": "3.8"
}
Сравнив этот вывод с YAML-выводом из предыдущего шага, можно заметить, что он представляет ту же конфигурацию, но в другом формате данных. Оба формата полезны в зависимости от ваших потребностей.
Просмотр конфигурации в формате JSON может быть особенно полезен при интеграции Docker Compose с другими инструментами или для программной обработки конфигурации.
Вывод только названий сервисов
На этом шаге мы научимся использовать команду docker-compose config для вывода только имён сервисов, определённых в нашем compose-файле. Это может быть полезно, когда вам нужен быстрый список сервисов без полных деталей конфигурации.
Команда docker-compose config имеет флаг --services, который делает именно это. Она проанализирует compose-файл и выведет только имена сервисов, по одному на строку.
Убедитесь, что находитесь в директории ~/project.
cd ~/project
docker-compose config --services
Поскольку в нашем файле docker-compose.yml в настоящее время есть только один сервис с именем web, вывод команды будет следующим:
web
Если бы в вашем compose-файле было определено несколько сервисов, каждое имя сервиса выводилось бы на новой строке. Например, если бы у вас были сервисы с именами web, db и app, вывод выглядел бы так:
web
db
app
Этот флаг — удобный способ быстро получить список сервисов, определённых в вашем проекте Docker Compose.
Вывод только названий образов
В этом завершающем шаге мы научимся использовать команду docker-compose config для вывода только имён образов, используемых сервисами из нашего compose-файла. Это полезно для быстрого просмотра зависимостей вашего проекта.
Команда docker-compose config имеет флаг --images, который выполняет эту задачу. Она проанализирует compose-файл и выведет только имена образов, по одному на строку.
Убедитесь, что находитесь в директории ~/project.
cd ~/project
docker-compose config --images
Поскольку наш файл docker-compose.yml использует образ nginx:latest для сервиса web, вывод команды будет следующим:
nginx:latest
Если бы у вас было несколько сервисов с разными образами, каждый образ выводился бы на новой строке. Например, для сервисов с образами nginx:latest, mysql:5.7 и python:3.9 вывод выглядел бы так:
nginx:latest
mysql:5.7
python:3.9
Этот флаг даёт быстрое представление об образах, требуемых вашим проектом Docker Compose.
Резюме
В этой лабораторной работе вы научились устанавливать Docker Compose, загружая бинарный файл и предоставляя ему права на выполнение, а также проверили установку, посмотрев версию. Затем вы создали базовый файл docker-compose.yml, определив в нём простой веб-сервис с использованием образа Nginx. В завершение вы использовали команду docker-compose config для проверки синтаксиса compose-файла, убедившись в его корректном формате перед развёртыванием.



