Сборка Dockerfile неожиданно завершается неудачей - PullRequest
0 голосов
/ 13 марта 2020

Я пытаюсь решить проблемы со сборкой при запуске команд для сборки ниже dockerfile, например, появляются ошибки:
1.

/bin/sh: 1: /opt/conda/bin/pip: not found
The command '/bin/sh -c wget -q https://repo.continuum.io/miniconda/Miniconda3-4.2.12-Linux-x86_64.sh -O /tmp/miniconda.sh  &&     echo 'd0c7c71cc5659e54ab51f2005a8d96f3 */tmp/miniconda.sh' | md5sum -c - &&     bash /tmp/miniconda.sh -f -b -p /opt/conda &&     /opt/conda/bin/conda install --yes -c conda-forge       python=3.5 sqlalchemy tornado jinja2 traitlets requests pip pycurl       nodejs configurable-http-proxy &&     /opt/conda/bin/pip install --upgrade pip &&     rm /tmp/miniconda.sh' returned a non-zero code: 127

2. При попытке комментировать проблемную часть c мы получаем еще одну проблему с npm, такую ​​как: /bin/sh: 1: npm: not found

Есть идеи, что здесь происходит?

Dockerfile

# Copyright (c) Jupyter Development Team.
# Distributed under the terms of the Modified BSD License.

FROM debian:jessie
MAINTAINER Jupyter Project <jupyter@googlegroups.com>

# install nodejs, utf8 locale, set CDN because default httpredir is unreliable
ENV DEBIAN_FRONTEND noninteractive
RUN REPO=http://cdn-fastly.deb.debian.org && \
    echo "deb $REPO/debian jessie main\ndeb $REPO/debian-security jessie/updates main" > /etc/apt/sources.list && \
    apt-get -y update && \
    apt-get -y upgrade && \
    apt-get -y install wget locales git bzip2 &&\
    /usr/sbin/update-locale LANG=C.UTF-8 && \
    locale-gen C.UTF-8 && \
    apt-get remove -y locales && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*
ENV LANG C.UTF-8

# install Python + NodeJS with conda
RUN wget -q https://repo.continuum.io/miniconda/Miniconda3-4.2.12-Linux-x86_64.sh -O /tmp/miniconda.sh  && \
    echo 'd0c7c71cc5659e54ab51f2005a8d96f3 */tmp/miniconda.sh' | md5sum -c - && \
    bash /tmp/miniconda.sh -f -b -p /opt/conda && \
    /opt/conda/bin/conda install --yes -c conda-forge \
      python=3.5 sqlalchemy tornado jinja2 traitlets requests pip pycurl \
      nodejs configurable-http-proxy && \
    /opt/conda/bin/pip install --upgrade pip && \
    rm /tmp/miniconda.sh
ENV PATH=/opt/conda/bin:$PATH

EXPOSE 8000

RUN mkdir -p /src/jupyterhub
WORKDIR /src/jupyterhub

ADD . /src/jupyterhub


RUN npm install --unsafe-perm && \
    pip install . && \
    rm -rf $PWD ~/.cache ~/.npm

ADD . /src/jupyterhub        
LABEL org.jupyter.service="jupyterhub"

CMD ["jupyterhub"]

1 Ответ

1 голос
/ 14 марта 2020

Последний пакет pip, размещенный в conda forge, - noarch/pip-20.0.2-py_2.tar.bz2, и в нем отсутствует папка bin, поэтому вызов /opt/conda/bin/pip выдаст /opt/conda/bin/pip: not found ошибку.

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

Для получения pip правильно, поправив Dockerfile с помощью нижеприведенного, добьемся цели:

RUN wget -q https://repo.continuum.io/miniconda/Miniconda3-4.2.12-Linux-x86_64.sh -O /tmp/miniconda.sh  && \
    echo 'd0c7c71cc5659e54ab51f2005a8d96f3 */tmp/miniconda.sh' | md5sum -c - && \
    bash /tmp/miniconda.sh -f -b -p /opt/conda && \
    /opt/conda/bin/conda install --yes -c conda-forge \
      python=3.5 sqlalchemy tornado jinja2 traitlets requests pip=18.0=py35_1001 pycurl \
      nodejs configurable-http-proxy && \
    /opt/conda/bin/pip install --upgrade pip && \
    rm /tmp/miniconda.sh
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...