/bin/sh:1:诗歌:未找到

2024-04-25 22:31:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用docker compose构建一个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文件: dockerfile文件:

^{pr2}$

docker编写:

version: '3'

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

Tags: install文件composedockerbuildrediswebpoetry
2条回答

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

RUN source ${HOME}/.profile

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

这样做的好处是不指定在本例中$HOME/root(以防以后需要一个用户,并且出于安全原因而不以root身份执行服务器)

将此添加到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,以便能够使用服务名称在服务之间进行连接。在

相关问题 更多 >