/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
чтобы иметь возможность подключаться между службами, используя имя службы.
В соответствии с официальной документацией вам необходимо установить переменную 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"]