命令'/ bin / sh -c pip install --upgrade pip && pip安装请求'返回非零代码:127

时间:2020-07-09 13:25:28

标签: python docker pip

我正在将请求安装在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 :(得分:0)

根据文档:

对于多阶段构建,您可以在Dockerfile中使用多个FROM语句。每个FROM指令可以使用不同的基数,并且每个都开始构建的新阶段。您可以有选择地将工件从一个阶段复制到另一个阶段,从而在最终图像中留下不需要的所有内容。为了展示它是如何工作的,让我们调整上一节中的Dockerfile以使用多阶段构建。 https://docs.docker.com/develop/develop-images/multistage-build/

因此,最终图像中不存在pip,因为在获取python之后您将获得FROM nginx:alpine

我认为最好的解决方案是在最后一个FROM之前进行pip安装,并按照此处的建议进行操作:https://pythonspeed.com/articles/multi-stage-docker-python/