【问题标题】:/bin/sh: 1: poetry: not found/bin/sh: 1: 诗歌:未找到
【发布时间】:2019-08-14 13:04:36
【问题描述】:

我正在尝试使用 docker-compose up 构建一个 docker 文件,但出现错误:

/bin/sh: 1: poetry: not found
ERROR: Service 'web' failed to build: The command '/bin/sh -c poetry install && bundler install' returned a non-zero code: 127

这是我的 docker 文件和 docker-compose-yml 文件: 码头文件:

FROM python:2.7

ENV LIBRARY_PATH=/lib:/usr/lib

RUN curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python

WORKDIR /stream

ADD . /stream

CMD ["cat", "/etc/os-release"]


RUN poetry install && \
bundler install


EXPOSE 8000

CMD ["poetry", "run", "python", "manage.py", "runserver", "0.0.0.0:8000"]

码头工人撰写:

version: '3'

services:
  redis:
    image: redis
    ports:
      - 6379
  web:
    build: .
    ports:
      - 8000:8000
    environment:
      - REDISTOGO_URL=redis://redis:6379
    depends_on:
      - redis

【问题讨论】:

    标签: python docker docker-compose stream-framework


    【解决方案1】:

    找不到poetry 二进制文件,因为它的位置尚未在PATH 环境变量中。 poetry 安装程序仅在您的 .profile 中添加一个命令,但它不会重新加载这些设置。在poetry 安装命令之后的Dockerfile 中,您需要添加这一行(它会重新加载.profile

    RUN source ${HOME}/.profile
    

    poetry 安装程序写信给${HOME}/.profile

    这样做的好处是没有指定在这种情况下$HOME/root(以防您以后需要一个用户,并且出于安全原因不以 root 身份执行您的服务器)

    【讨论】:

    • 这不起作用。每个 docker 指令都会在新容器中启动一个新 shell。无论您采购什么,都不会转移到下一步。 For more reference
    【解决方案2】:

    将此添加到您的 Dockerfile:

    FROM python:2.7
    
    ENV LIBRARY_PATH=/lib:/usr/lib
    
    RUN curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python
    
    WORKDIR /stream
    
    ADD . /stream
    
    ENV PATH="${PATH}:/root/.poetry/bin"
    
    RUN poetry install && \
    bundler install
    
    
    EXPOSE 8000
    
    CMD ["/root/.poetry/bin/poetry", "run", "python", "manage.py", "runserver", "0.0.0.0:8000"]
    

    另一方面,您需要在compose 中设置network,以便能够使用服务名称在服务之间进行连接。

    【讨论】:

    • 我测试过,它有效。您需要删除旧图像并重新构建。如果你说什么不起作用也会有帮助
    • 我做到了,我得到了这个错误:/root/.poetry/lib/poetry/_vendor/py2.7/subprocess32.py:149: RuntimeWarning: _posixsubprocess 模块没有被使用。如果您的程序使用线程,子进程的可靠性可能会受到影响。 “程序使用线程。”,RuntimeWarning)错误:服务'web'未能构建:命令'/bin/sh -c诗歌安装&&捆绑器安装'返回一个非零代码:1
    • 尝试在RUN poetry install之前添加pip install -U subprocess32
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 2017-10-20
    • 1970-01-01
    相关资源
    最近更新 更多