/bin/sh: 1: Стихотворение: не найдено

Я пытаюсь создать файл Docker с 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:

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"]

докер-Compose:

version: '3'

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

4 ответа

poetry двоичный файл не найден, потому что его местоположение еще не находится в PATH переменная окружения. poetry установщик только добавляет команду в ваш .profile но он не перезагружает эти настройки. в Dockerfile после poetry Команда installalation вам нужно добавить эту строку (она перезагружается .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"]

с другой стороны, вам нужно настроить network в compose чтобы иметь возможность подключаться между службами, используя имя службы.

Добавьте это в Dockerfile

      ENV PATH="/root/.local/bin:$PATH"

В соответствии с официальной документацией вам необходимо установить переменную env для поэзии, также есть новая функция/ссылка установки, но новый установщик, если для синтаксиса python 3

пытаться

      FROM python:[3x]

# ENV for poetry https://python-poetry.org/docs/configuration/#using-environment-variables
# make poetry create the virtual environment in the project's root, it gets named `.venv`
# and do not ask any interactive question
ENV POETRY_HOME="/opt/poetry" \
    POETRY_VIRTUALENVS_IN_PROJECT=true \
    POETRY_NO_INTERACTION=1

# Prepend poetry and venv to path
ENV PATH="$POETRY_HOME/bin:$VENV_PATH/bin:$PATH"

RUN apt-get update && apt-get install --no-install-recommends -y curl \
    && curl -sSL https://install.python-poetry.org | python

# Update poetry to latest version
RUN poetry self update

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"]

Другие вопросы по тегам