Dockerfile: многоступенчатые сборки не работают, и любой образ python3 + alpine + java легко доступен - PullRequest
0 голосов
/ 15 февраля 2019

Я контейнерный компонент.Это требует Linux + Python и Java.

Linux + Python - я использую образ Alpine 3.5 и Python 3.5.

Вот мой файл Docker.

Dockerfile:

#
#       Health Monitoring Docker File
#
#ARG JAVA_BASE=1.0
#FROM csf-docker-delivered.repo.lab.pl.alcatel-lucent.com/java_base:17.6-1
#WORKDIR /etc/alternatives
#RUN CGO_ENABLED=0
FROM registry1-docker-io.repo.lab.pl.alcatel-lucent.com/python:3.5-alpine
#COPY --from=build  /etc/alternatives/* .
#RUN rm -rf /var/cache/apk/* && \
#    rm -rf /tmp/*
#
#RUN apk update
#
#RUN apk add --update --no-cache\
#    build-base \
#    openjdk8-jre \
#  && pip install virtualenv \
#  && rm -rf /var/cache/apk/*

#RUN apk update && apk upgrade && \
#    apk add openjdk8 && \
#    mkdir /tmp/tmprt && \
#    cd /tmp/tmprt && \
#    apk add zip && \
#    unzip -q /usr/lib/jvm/default-jvm/jre/lib/rt.jar && \
#    apk add zip && \
#    zip -q -r /tmp/rt.zip . && \
#    apk del zip && \
#    cd /tmp && \
#    mv rt.zip /usr/lib/jvm/default-jvm/jre/lib/rt.jar && \
#    rm -rf /tmp/tmprt /var/cache/apk/* bin/jjs bin/keytool bin/orbd bin/pack200 bin/policytool \
#          bin/rmid bin/rmiregistry bin/servertool bin/tnameserv bin/unpack200

COPY ./jdk-8u201-linux-x64.tar.gz /
RUN tar xf /jdk-8u201-linux-x64.tar.gz
ENV JAVA_HOME=/jdk1.8.0_201/bin

ENV NGDB_HOME /opt/nsn/ngdb
#RUN yum -y install openjdk-8-jdk-headless
#RUN apt-get install openjdk-8-jdk-headless
#COPY ./openjdk-8_8u181-b13.orig.tar.gz /
#RUN tar xf /openjdk-8_8u181-b13.orig.tar.gz
RUN mkdir -p /opt/nsn/ngdb/monitoring/scripts
RUN mkdir -p /opt/nsn/ngdb/monitoring/utils
RUN mkdir -p /var/local/monitoring/output
RUN mkdir -p /var/local/monitoring/work
RUN for directory in boundaryStatus postgresUsersCount backlogHadoop tableCount_Usage Dimension_Count tableCount_Day tableCount_Week tableCount_Month sendSummaryReport; do mkdir -p $directory;done
COPY ./utils/* /opt/nsn/ngdb/monitoring/utils/
COPY ./scripts/* /opt/nsn/ngdb/monitoring/scripts/
COPY ./conf/* /opt/nsn/ngdb/monitoring/conf/
COPY ./postgresql-9.2-1004.jdbc4.jar /opt/nsn/ngdb/monitoring/utils/
RUN mkdir -p /opt/nsn/ngdb/monitoring/python-dependencies
COPY ./html3-1.17.tar.gz /opt/nsn/ngdb/monitoring/python-dependencies
COPY ./py4j-0.10.8.1.zip /opt/nsn/ngdb/monitoring/python-dependencies
#RUN tar xf /opt/nsn/ngdb/monitoring/python-dependencies/html3-1.17.tar.gz
#WORKDIR /html3-1.17/
#RUN python /html3-1.17/setup.py install
RUN unzip /opt/nsn/ngdb/monitoring/python-dependencies/py4j-0.10.8.1.zip
WORKDIR /py4j-0.10.8.1
RUN python /py4j-0.10.8.1/setup.py install

Но если я попытаюсь добавить Java Image & Python Alpine Image, используя «FROM», я смогу получить только одну вещь в своем контейнере.

При поиске я обнаружил MultiЭтап сборки, но когда я сделал, как показано ниже, он выдает ошибку "Неизвестный флаг: из"

FROM csf-docker-delivered.repo.lab.pl.alcatel-lucent.com/java_base:17.6-1
WORKDIR /etc/alternatives
FROM registry1-docker-io.repo.lab.pl.alcatel-lucent.com/python:3.5-alpine
COPY --from=0 /etc/alternatives/* .

Может кто-нибудь, пожалуйста, помогите мне?

И дополнение к этому,

Я пытаюсь установить py4j как внешний модуль, через который я вызываю Java-классы.

Я установил WORKDIR, и тогда установка модуля py4j пройдет гладко.

Позже, если япопробуйте установить WORKDIR для другого модуля, например: html, и когда я попытаюсь

RUN python setup.py install

Выдает ошибку «Нет такого файла или каталога»

Не могли бы вы помочь с этим?

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