Автоматический ввод для выбора скрипта в Dockerfile - PullRequest
0 голосов
/ 06 мая 2018

У меня есть сценарий оболочки, такой как blow, и я хочу выполнить его в Dockerfle и сделать автоматический выбор, используя echo -e:

1. Which application you'd select:
    1) nginx
    2) squid
    3) hproxy
  Please enter a number (Default: 1): 2

  You choose = squid

2. Please enter password for squid (Default: xxxxxxxx): yyyyyyyy

  password = yyyyyyyy

3. Please enter a port for squid [1-65535] (Default: 443): 3128
  port = 3128

4. ....

Это работает в оболочке докера:

echo -e "2\nmypass\n3128\n" | bash install-proxy.sh

, но не может работать в Dockerfile:

RUN echo -e "2\nmypass\n\3128\n" | bash install-proxy.sh

похоже, что команда RUN объединяет их в одну строку, так что первый выбор принял неправильный выбор, а последующие не приняли никакого выбора.

Весь сценарий здесь

1 Ответ

0 голосов
/ 06 мая 2018

Для вашего сценария было бы проще запрашивать эти значения (для чтения из стандартного ввода), только если установлена ​​известная переменная окружения , а не .

Таким образом, ваш Dockerfile может установить ENV app=xxx до RUN install-proxy.sh

Если он обнаружит, что установлен app, он пропустит часть вопроса и сразу перейдет к печати "you chose '$app'".

Таким образом, вы полностью обойдете сложную часть отправки содержимого stdin скрипту через канал в шаге Dockerfile RUN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...