Podman, OCI и HEALTHCHECK.
Восстанавливал работоспособность одной репы и столкнулся с забавной особенностью.
Compose файлы, которые там есть — предельно простые. Есть цепочка сервисов, которые запускаются друг за другом. Первым стартует БД, никаких проблем. Вторым — сервис с API для загрузки данных в БД. Опять никаких проблем. Третьим — контейнер с wrk для нагрузочного тестирования. И вот тут загвоздка. Контейнер зависал в бесконечном состоянии "Created".
Подебажил. Оказалось, что при сборке образа API никак не фиксировался HEALTHCHECK! Podman по-умолчанию использует именно OCI спеку контейнеров, а не Docker, и там нет поддержки HEALTHCHECK. Из-за этого не срабатывал condition: service_healthy в Compose-файле, подвешивая контейнер с wrk.
Чтобы решить эту проблему, нужно явно указать формат спеки как Docker при сборке Dockerfile/Containerfile. У Podman это выглядит так:
podman build --format docker .А вот так для Podman Compose:
podman-compose --podman-build-args='--format docker' buildАльтернативный вариант, если не хочется передавать аргумент каждый раз — установить переменную окружения:
export BUILDAH_FORMAT=dockerВот такие пироги :)

