******** ОБНОВЛЕНИЕ *********
В Bash-скрипте нет ошибок, проверено с помощью https://www.shellcheck.net/
Добавление в Dockerfile
строка
RUN tty | sed -e "s:/dev/::"
Выходы:
No tty
Следующая строка на Dockerfile
всегда дает сбой:
ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
![enter image description here](https://i.stack.imgur.com/q6H6O.jpg)
Я оставляю изображение, чтобы уточнить.Короче говоря, я думаю, что мне нужно каким-то образом прикрепить tty к пакетному сценарию, но не знаю, как это сделать.
Спасибо
------------------- СТАРЫЙ СОДЕРЖАНИЕ -------------------
Мне нужно обновить образ Jenkins до 2.138.2.Вот отрывок оригинального Dockerfile
:
FROM openjdk:8-jdk
RUN apt-get update && apt-get install -y git curl && rm -rf /var/lib/apt/lists/*
# ...
# Use tini as subreaper in Docker container to adopt zombie processes
COPY tini_pub.gpg ${JENKINS_HOME}/tini_pub.gpg
RUN curl -fsSL https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-static-$(dpkg --print-architecture) -o /sbin/tini \
&& curl -fsSL https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-static-$(dpkg --print-architecture).asc -o /sbin/tini.asc \
&& gpg --import ${JENKINS_HOME}/tini_pub.gpg \
&& gpg --verify /sbin/tini.asc \
&& rm -rf /sbin/tini.asc /root/.gnupg \
# ...
ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/jenkins.sh"]
Использование этого Dockerfile
FAILS из-за оператора gpg --import теперь необходимо исправить с помощью опции --no-tty
.Таким образом, эта строка остается следующей:
&& gpg --no-tty --import ${JENKINS_HOME}/tini_pub.gpg \
Это не нормально, поскольку выполнение jenkins.sh
теперь не выполняется несколькими способами.Код сценария начинается следующим образом:
#! /bin/bash -e
: "${JENKINS_WAR:="/usr/share/jenkins/jenkins.sh
Этот сценарий вызывается из файла Docker в этой строке:
ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/jenkins.sh"]
Но теперь происходит сбой с несколькими ошибками, и кажется, что это невозможнообработайте файл, не удаляя строку shebang и не удаляя опцию '-' или '-e'.Остальная часть файла не обрабатывается нормально, если мы изменим bash на другую оболочку (не странную) и не удалим параметр -e (если я это сделаю, точка входа не найдет сценарий jenkins.sh).
Подводя итог, мне нужно было удалить tty из gpg
, но после этого я потерял доступ к сценариям bash.
Я проверил применяемый обходной путь, здесь описан обходной путь ((еслиЯ прав, дело № 8, gpg может написать в tty в какой-то момент ): https://lists.gnupg.org/pipermail/gnupg-users/2017-April/058162.html
Есть ли способ прикрепить tty
к entrypoint
или иметь какие-либо настройки в скрипте, чтобы эта работа работала нормально?
Спасибо.