Команда '/ bin / sh - c pip install --upgrade pip && pip install requests' вернула ненулевой код: 127 - PullRequest
0 голосов
/ 09 июля 2020

Я устанавливаю запросы в контейнер docker, чтобы использовать его в сценарии python. Вот мой файл docker.

# stage1 as builder
FROM node:10-alpine as builder
FROM python:3.7
FROM nginx:alpine

RUN pip install --upgrade pip && \
    pip install requests

WORKDIR /opt/
ADD init.py /opt/
RUN python init.py
## Remove default nginx index page
RUN rm -rf /usr/share/nginx/html/*

WORKDIR /opt/app-ui
# copy the package.json to install dependencies
COPY agentform/dist/agentform/* /usr/share/nginx/html/


EXPOSE 4200 80

ENTRYPOINT ["nginx", "-g", "daemon off;"]

docker -compose показывает следующую ошибку:

Step 4/12 : RUN pip install --upgrade pip &&     pip install requests
 ---> Running in e7ad71640bb3
/bin/sh: pip: not found
ERROR: Service 'web' failed to build: The command '/bin/sh -c pip install --upgrade pip &&     pip install requests' returned a non-zero code: 127

1 Ответ

0 голосов
/ 09 июля 2020

Согласно документации:

При многоступенчатой ​​сборке вы используете несколько операторов FROM в своем Dockerfile. Каждая инструкция FROM может использовать другую базу, и каждая из них начинает новый этап сборки. Вы можете выборочно копировать артефакты с одного этапа на другой, оставляя на конечном изображении все, что вам не нужно. Чтобы показать, как это работает, давайте адаптируем Dockerfile из предыдущего раздела для использования многоэтапных сборок. https://docs.docker.com/develop/develop-images/multistage-build/

так что pip отсутствует в окончательном изображении, так как вы получаете FROM nginx:alpine после получения python

Я думаю, что Лучшее решение - установить pip перед последним FROM и сохранить, как предлагается здесь: https://pythonspeed.com/articles/multi-stage-docker-python/

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