假设您有相当大的要求。

当您修改requirements.pip时,构建Docker镜像会花费很多时间,因为它必须以requirements.pip下载并安装所有软件包

修改长度requirements.pip时,有没有一种方法可以加快docker镜像的构建过程?

我的 docker

....




 COPY ./momsite/requirements.pip /requirements.pip
 RUN pip install -r /requirements.pip \
   && rm -rf /root/.cache

 COPY ./momsite /app/momsite

 COPY ./compose/production/web/etc /etc

 COPY ./compose/production/web/start.sh /
 RUN chmod +x /start.sh


 WORKDIR /app
 RUN chown www-data:www-data /app/momsite/reload

 CMD ["/start.sh"]

需求点
 amqp==2.1.4
 anyjson==0.3.3
 apns2==0.3.0
 argh==0.24.1
 arrow==0.5.4
 asgi-redis==0.14.1
 asgiref==3.2.3
 asn1crypto==0.22.0
 astroid==1.2.1
 async-timeout==3.0.1
 attrs==19.3.0
 autobahn==19.10.1
 Automat==0.7.0
 autopep8==1.2.1
 awscli==1.10.46
 Babel==2.3.4
 BabelDjango==0.2.2
 backcall==0.1.0
 backports-abc==0.4
 backports.csv==1.0.7
 backports.shutil-get-terminal-size==1.0.0
 backports.ssl-match-hostname==3.4.0.2
 bcdoc==0.12.2
 beautifulsoup4==4.6.0
 billiard==3.5.0.2
 bleach==2.1.1
 boto==2.42.0
 boto3==1.9.146
 botocore==1.12.146
 braintree==3.24.0
 cachetools==3.1.0
 celery==4.0.2
 certifi==2018.11.29
 cffi==1.10.0
 channels==2.3.1
 chardet==3.0.4
 cluster==1.1.2
 colorama==0.3.3
 confusable-homoglyphs==3.2.0
 constantly==15.1.0
 contextlib2==0.4.0
 coreapi==2.3.3
 coreschema==0.0.4
 cron-descriptor==1.2.5
 croniter==0.3.12
 cryptography==2.8
 cssselect==0.9.1
 cssutils==1.0.1
 cycler==0.10.0
 Cython==0.24
 daphne==2.3.0
 dateutils==0.6.6
 decorator==4.1.2
 defusedxml==0.5.0
 Delorean==0.4.1
 derpconf==0.7.3
 diff-match-patch==20121119
 dj-database-url==0.3.0
 dj-email-url==0.0.4
 Django==2.2.5
 django-absolute==0.3
 django-admin-rangefilter==0.3.8
 django-advanced-filters==1.1.1
 django-annoying==0.9.0
 django-appconf==1.0.2
 django-autocomplete-light==3.3.5
 -e git://github.com/justinmayer/django-autoslug.git@4dc75083d84265e019a900d636273c731457193d#egg=django_autoslug
 django-avatar==2.0
 django-baton==1.3.6
 django-bower==5.0.1
 django-braces==1.13.0
 django-cache-url==1.0.0
 django-cacheops==3.2.1
 django-categories==1.6.1
 django-celery-results==1.0.1
 django-classy-tags==0.5
 django-compat==1.0.15
 django-configurations==0.8
 django-constance==2.0.0
 django-cors-headers==0.12
 django-countries==3.4.1
 django-crispy-forms==1.7.2
 django-dashing==0.3
 django-db-readonly==0.3.2
 django-debug-panel==0.8.3
 django-debug-toolbar==2.0
 django-debug-toolbar-line-profiler==0.4.0

... total 383 line

最佳答案

您可以将自己的需求划分为不同的文件,这些需求不太可能发生变化,而那些需求最可能发生变化。

然后,您有两个不同的RUN阶段,例如

RUN pip install -r less_likely_to_change.txt
RUN pip install -r most_likely_to_change.txt

这将在您最需要的地方创建一个图层,因此,您将加快处理过程,因为您不会那么频繁地更改less_likely_to_change.txt

关于python - Docker和Python,当您的requirements.pip列表很大时加快速度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58645433/

10-12 21:01