Как я могу установить pg96 в Docker, спрашивая пароль и выдавая ошибку?
Я следовал этому https://www.openscg.com/bigsql/package-manager/ но по последней команде, как дать пароль
Я хочу установить pg96 с помощью pgc.
Все работает нормально, pgc установлен в моем syatem, но когда я хочу установить pg96, он дает ошибку и подсказку.
Шаг 18/19: RUN ./pgc start pg96 ---> Запуск в 00938b13380c
Инициализация pg96
Step 18/19 : RUN ./pgc start pg96
---> Running in 00938b13380c
## Initializing pg96 #######################
/usr/lib64/python2.7/getpass.py:83: GetPassWarning: Can not control echo on the terminal.
passwd = fallback_getpass(prompt, stream)
Warning: Password input may be echoed.
Superuser Password [password]: Traceback (most recent call last):
File "/bigsql/pg96/init-pg96.py", line 112, in <module>
pg_password = util.get_superuser_passwd()
File "/bigsql/hub/scripts/util.py", line 1344, in get_superuser_passwd
pg_pass1 = getpass.getpass(str("Superuser Password [password]: "))
File "/usr/lib64/python2.7/getpass.py", line 83, in unix_getpass
passwd = fallback_getpass(prompt, stream)
File "/usr/lib64/python2.7/getpass.py", line 118, in fallback_getpass
return _raw_input(prompt, stream)
File "/usr/lib64/python2.7/getpass.py", line 135, in _raw_input
raise EOFError
EOFError
Когда я делаю./pgc начать pg96
Он спрашивает пароль, как я могу дать пароль, поскольку я использую файл Docker.
2 ответа
Ответ, который я нашел на этот вопрос, таков.
Pg96 использует скрипт Python, который проверяет любой файл.pgpass, поэтому после установки создайте файл.pgpass в каталоге pg96.
или если он не получает файл, то он запрашивает пароль в командной строке.
Мое предложение создать файл.pgpass внутри папки pg96.
а затем выполните команду
./pgc start pg96
Спасибо
У вас есть как минимум 2 способа
1) Вы можете попытаться передать "да" или "нет" вашему сценарию установки.
RUN sh -c '/bin/echo -e "yes\nyes\nyes\nno\nyes\nno" | your_script'
2) или вы можете попробовать тоже с ожидаемым
RUN apt-get install expect
ADD install_script
RUN install_script
где install_script находится
#!/usr/bin/expect
set timeout 2
spawn "./your_script"
expect "Question 1 :" { send "yes\n" }
expect "Question 2 :" { send "no\n" }
interact
Это исходит от
https://forums.docker.com/t/dockerfile-how-to-answer-install-question-from-application/5240/2