Пакет удален из файла require.txt Docker build, по-прежнему загружайте этот пакет - PullRequest
0 голосов
/ 01 февраля 2020

Я только начал использовать docker, чтобы документировать мои django приложения. Я использую сервер Centos для размещения моего приложения. Теперь, когда я впервые строю docker образ, я получил ошибку в пакете 'l xml', поэтому я удалил его из файла needs.txt. Но когда я перестраиваю образ снова, 'l xml' - пакет все еще загружает

Вот мой Dockerfile

FROM python:3.7.4-alpine3.10

ADD ConnectOneWeb/requirements.txt /app/requirements.txt

RUN set -ex \
    && apk add --no-cache --virtual .build-deps libffi-dev build-base \
    && apk add mariadb-dev \
    && apk add jpeg-dev \
    && python -m venv /env \
    && /env/bin/pip install --upgrade pip \
    && /env/bin/pip install --no-cache-dir -r /app/requirements.txt \
    && runDeps="$(scanelf --needed --nobanner --recursive /env \
        | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
        | sort -u \
        | xargs -r apk info --installed \
        | sort -u)" \
    && apk add --virtual rundeps $runDeps \
    && apk del .build-deps

ADD ConnectOneWeb /app
WORKDIR /app

ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH

EXPOSE 8000
CMD ["gunicorn", "--bind", ":8000", "--workers", "3", "ConnectOneWeb.wsgi:applic$

и мой файл require.txt

asgiref==3.2.3
bluesnap==1.2019.9.1
certifi==2018.4.16
cffi==1.13.2
chardet==3.0.4
cryptography==2.8
Django==3.0
django-anymail==7.0.0
django-countries==5.5
django-crontab==0.7.1
django-paypal==1.0.0
django-prometheus==1.1.0
gevent==1.4.0
greenlet==0.4.15
idna==2.7
Markdown==3.1.1
mysqlclient==1.4.6
pendulum==2.0.5
Pillow==6.2.1
prometheus-client==0.7.1
pycparser==2.19
pycryptodomex==3.9.4
pyOpenSSL==19.1.0
python-alipay-sdk==2.0.1
python-dateutil==2.8.1
pytz==2019.3
pytzdata==2019.3
requests==2.22.0
sentry-sdk==0.13.5
short-url==1.2.2
six==1.13.0
sqlparse==0.3.0
stripe==2.42.0
tomd==0.1.3
urllib3==1.25.7
uWSGI==2.0.18
xmltodict==0.12.0

Как вы можете видеть, в файле require.txt нет пакета 'l xml', но я не понимаю, почему он все еще загружается при сборке образа

1 Ответ

0 голосов
/ 02 февраля 2020

Решение для завершения сборки Docker не должно заключаться в удалении необходимых зависимостей и продолжении до тех пор, пока оно не будет успешно выполнено.

В этом случае, по-видимому, для успешной работы вам нужны только версии dev системных библиотек. установите lxml на базовый образ Alpine.

Добавление:

    && apk add libxml2-dev libxslt-dev \

в строке 8 позволит добиться цели, что соответствует вашему текущему Dockerfile. (см. также related post)

...