Ваша первая проблема заключается в том, что контейнер kong
запускается до того, как контейнер kong-database
завершил процесс инициализации.Это источник ошибок «отказано в соединении».Вы можете проверить это, сначала запустив базу данных:
docker-compose up kong-database
, а затем подождав, пока не увидите:
PostgreSQL init process complete; ready for start up.
Затем в другом окне запустите контейнер kong
:
docker-compose up kong
И вы увидите новую ошибку:
kong_1 | nginx: [warn] [lua] log.lua:63: log(): postgres
database 'kong' is missing migration: (response-transformer)
2016-05-04-160000_resp_trans_schema_changes
kong_1 | nginx: [error] init_by_lua error:
/usr/local/share/lua/5.1/kong/init.lua:172: [postgres error] the
current database schema does not match this version of Kong.
Please run `kong migrations up` to update/initialize the database
schema. Be aware that Kong migrations should only run from a
single node, and that nodes running migrations concurrently will
conflict with each other and might corrupt your database schema!
Это означает, что kong
успешно подключается к postgres, но похоже, что вам нужно запустить какую-то инициализацию схемы базы данныхдо того, как это сработает.
Типичное решение для такого рода зависимостей запуска - реализовать цикл ожидания при запуске клиентов вашей базы данных, который зацикливается до тех пор, пока база данных не станет доступной.Что-то вроде:
while ! psql -h kong-database -U kong -c 'select 1'; do
sleep 1
done