04 / Контейнеры

Docker Compose: аккуратный запуск

Несколько простых проверок перед запуском экономят время на диагностике контейнеров.

Практическая заметка5 минут чтения

Сначала читаем Compose

Перед первым запуском проверьте, какие образы собираются, какие порты публикуются в интернет и какие файлы должны существовать на хосте. Особенно внимательно относитесь к bind mounts — это прямые пути к файловой системе.

docker compose config --quiet
docker compose config

Проблема «файл стал директорией»

При короткой записи монтирования Docker может создать отсутствующий путь на хосте как каталог. Тогда контейнер вместо JSON-файла получает директорию и сообщает: is a directory.

# Проверить ожидаемый файл:
test -f ./config/config.json && echo OK
# Проверить, что секрет — именно файл:
test -f ./secrets/token.key && echo OK

Создавайте необходимые файлы до docker compose up. По возможности используйте расширенный синтаксис bind mount с create_host_path: false, чтобы отсутствующие пути приводили к ошибке, а не создавались автоматически.

Смотрите на состояние и логи

docker compose up -d
docker compose ps
docker compose logs --tail=100

Статус Restarting означает, что процесс завершает работу и контейнер запускается заново. Ищите в журналах самую первую осмысленную ошибку, а не её многочисленные повторы.

Порты и доступность

Если сервис нужен только внутреннему reverse proxy, публикуйте его на loopback:

ports:
  - "127.0.0.1:8443:443/tcp"

Это предотвращает прямое подключение из сети к порту 8443 по IPv4. Однако не забывайте о других публикациях, IPv6, firewall и настройках приложения.

Храните секреты вне каталога публичного сайта и не включайте их в Docker-образ. Проверяйте права доступа и тома перед запуском.

Что записать после установки

Оставьте себе файл с рабочими командами проверки, способом отката и местом хранения резервной копии. Через несколько месяцев эта небольшая заметка сэкономит больше времени, чем сложная система автоматизации.

← Вернуться ко всем статьям