Почему, когда я добавляю nginx в Docker, я получаю ошибку: / bin / sh: pip: not found - PullRequest
0 голосов
/ 03 мая 2019

Если я добавлю

FROM nginx:1.16-alpine

в мой Dockerfile, моя сборка обрывается с ошибкой:

/bin/sh: pip: not found

Я попытался отправить команду обновления через:

RUN set -xe \
    && apt-get update \
    && apt-get install python-pip

но я получаю ошибку, что apt-get не может быть найден.

Вот мой Dockerfile:

FROM python:3.7.2-alpine
FROM nginx:1.16-alpine

ENV INSTALL_PATH /web

RUN mkdir -p $INSTALL_PATH

WORKDIR $INSTALL_PATH

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

CMD gunicorn -b 0.0.0.0:9000 --access-logfile - "web.webhook_server:create_app()"

Если я уберу эту строку:

FROM nginx:1.16-alpine

все работает нормально. Но, конечно, мне нужен nginx.

Что здесь может пойти не так? Я очень смущен.

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Используйте «ОТ nginx: 1.16» вместо «ОТ nginx: 1.16-alpine».У альпийского изображения нет подходящего.С помощью «nginx: 1.16» вы можете установить дополнительные пакеты с помощью apt.

Директива FROM указывает демону docker расширяться из образа.Вы не можете расширить 2 разных изображения.

Дайте мне знать, если это поможет.

0 голосов
/ 03 мая 2019

Как упоминалось в этой проблеме :

Использование нескольких FROM на самом деле не особенность, а ошибка [...]

Обратите внимание, что:
- Обсуждается возможность удаления поддержки нескольких FROM: # 13026

Таким образом, вы должны выбрать одно изображение, которое подходит вам больше всего, а затем ввести необходимые пакеты через RUN apk add.Обратите внимание, что оба изображения, которые вы использовали в качестве базы, основаны на alpine linux , и вам нужно использовать apk вместо apt-get для установки пакетов.

...