Docker java7 install fail

Я пытаюсь установить java7 через ppa (RUN add-apt-repository ppa: webupd8team/java -y) в образ моего докера, но с этой ошибкой он не работает:

returned a non-zero code: 127

Ниже приведены способы правильной установки, но они не работают. Я тоже пробовал оба ppas.

RUN  apt-get install python-software-properties -y
RUN  add-apt-repository ppa:webupd8team/java -y
#RUN add-apt-repository ppa:eugenesan/java -y
RUN apt-get update
RUN  apt-get install oracle-java7-installer -y

Вот вывод журнала:

Step 28 : RUN  add-apt-repository ppa:webupd8team/java -y
 ---> Running in b278761a4209
 [91m/bin/sh: 1: add-apt-repository: not found
 [0m 

Итак... Мне нужно выяснить, где/если эта команда существует в вспомогательной lib или что:

add-apt-repository

add-apt-repository, по-видимому, входит в состав свойств python-software-properties. Я не вижу никаких реальных ошибок на этом шаге, кроме тех сообщений, которые появляются в других областях сборки. Поэтому я предполагаю, что если я смогу решить эту проблему, вышеупомянутый шаг python будет установлен по мере необходимости:

    [91mdebconf: unable to initialize frontend: Dialog
     debconf: (TERM is not set, so the dialog frontend is not usable.)
     debconf: falling back to frontend: Readline
     [0m[91mdebconf: unable to initialize frontend: Readline
     debconf: (This frontend requires a controlling tty.)
     debconf: falling back to frontend: Teletype
     [0m[91mdpkg-preconfigure: unable to re-open stdin: 

Итак. Как установить термин или диалог? Я думал, что -y разрешил это

Ответы

Ответ 1

-y apt-get install команды apt-get install сообщают apt-get "принять да", что не то же самое, что работает в неинтерактивном режиме.

Вы видите сообщение "невозможно инициализировать интерфейс: диалог", потому что Debian работает apt-get в интерактивном режиме. Чтобы сказать, чтобы он работал в неинтерактивном режиме, добавьте эту строку в начало вашего файла Docker:

ENV DEBIAN_FRONTEND noninteractive

Теперь ваши команды будут работать в неинтерактивном режиме, поэтому apt-get не будет пытаться вскрыть любые диалоги.

Что касается вашей фактической ошибки, вы правы, add-apt-respository является частью python-software-properties. Попробуйте добавить команду apt-get update -y выше вашей команды apt-get install python-software-properties.

RUN apt-get update -y                             && \
    apt-get install python-software-properties -y && \
    add-apt-repository ppa:webupd8team/java -y    && \
    apt-get update -y                             && \
    apt-get install oracle-java7-installer -y     && \
    oracle-java7-set-default

Обратите внимание: вам нужно будет сделать две команды apt-get update -y, одну перед запуском (всегда хорошая привычка вступать), и после того, как вы добавили PPA oracle java.

apt-get manual

Документы Docker ENV

Ответ 2

add-apt-repository команда является частью программного обеспечения-свойств-общего пакинга. Установите программные свойства - общие, а не свойства python-software.

Затем вы можете добавить ppa: репозиторий webupd8team. Но проблема все еще остается.

Установите принятую-oracle-лицензию-v1-1 и установите java. Ниже образец Dockerfile будет работать отлично.

FROM ubuntu:14.04

RUN apt-get update
RUN apt-get install software-properties-common -y
RUN add-apt-repository ppa:webupd8team/java -y
RUN apt-get update
RUN echo debconf shared/accepted-oracle-license-v1-1 select true | debconf-set-selections
RUN apt-get install oracle-java7-installer -y

Ответ 3

Я попробовал несколько разных вещей безрезультатно, поэтому вместо этого я пошел с OpenJDK. Это заставило меня пройти этот шаг и следующую ошибку: -).

# method 2
RUN apt-get install openjdk-7-jre -y