Ошибка возникает из-за конфигурации command
. Если вы осмотрите готовый контейнер postgres (docker inspect <container-id>
), точка входа и команда будут выглядеть следующим образом:
"Cmd": [
"pg_restore -U postgres -d postgres /var/lib/postgresql/ph.backup"
],
"Entrypoint": [
"docker-entrypoint.sh"
]
Это практически означает, что скрипт точки входа по умолчанию docker-entrypoint выполняется с однимаргументом является команда pg_restore
. В строке 176 скрипт выполняет переданные аргументы (exec "$@"
). Команде exec требуется команда и список аргументов
exec [command [arguments]]
, но в этом случае команда представляет собой полную строку, образованную pg_restore
и ее аргументами. Это, очевидно, неверный файл
Теперь, если вы измените command
в docker-compose.yml
на:
command: pg_restore -U postgres -d postgres /var/lib/postgresql/ph.backup
, проверка контейнера показывает следующее:
"Cmd": [
"pg_restore",
"-U",
"postgres",
"-d",
"postgres",
"/var/lib/postgresql/ph.backup"
]
это означает, что exec
будет запускать pg_restore
в качестве команды, передавая остальное в качестве аргументов, и все работает как положено.
В качестве альтернативы вы можете переопределить точку входа в файле docker-compose для выполнения команды в shell :
entrypoint: /bin/bash -c
command:
- pg_restore -U postgres -d postgres /var/lib/postgresql/ph.backup