我刚刚开始使用docker来文档化我的django应用程序。我正在使用centos服务器来托管我的应用程序。现在,当我第一次构建docker镜像时,我在'lxml‘包上得到了错误,所以我从requirements.txt文件中删除了它。但当我再次重新构建镜像时,'lxml‘包仍在下载中
这是我的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$
和我的requirements.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
正如您所看到的,requirements.txt中没有'lxml‘包,但是我不明白为什么在构建镜像时仍然要下载它
发布于 2020-02-02 09:08:26
使您的Docker构建完成的解决方案不应该是删除所需的依赖项并继续,直到它成功。
在这种情况下,您可能只需要系统库的开发版本就可以在高山基础映像上成功安装lxml。
添加:
&& apk add libxml2-dev libxslt-dev \在第8行,将在一个与当前Dockerfile一致的客场中完成此操作。(另请参阅related帖子)
https://stackoverflow.com/questions/60017515
复制相似问题