假设你有一个相当大的requirements.pip
修改requirements.pip时,需要很长时间才能生成Docker映像,因为它必须下载并安装requirements.pip中的所有软件包
在修改长度requirements.pip时,是否有一种方法可以加快码头图像的生成过程?
我的码头
....
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"]requirements.pip
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发布于 2019-12-01 18:41:50
我找到了更好的选择
export DOCKER_BUILDKIT=1
export COMPOSE_DOCKER_CLI_BUILD=1将下面一行作为Dockerfile的第一行。
# syntax=docker/dockerfile:experimental
我丢了找到这个的地方..。
最终的结果是,您的需求包将被缓存(一旦下载,缓存版本将在下一次构建时使用)
发布于 2019-10-31 15:05:41
您可以在不同的文件中划分不太可能更改的需求和最有可能更改的需求。
然后有两个不同的RUN阶段,如
RUN pip install -r less_likely_to_change.txt
RUN pip install -r most_likely_to_change.txt这将创建一个层,在其中您拥有大部分需求,因此,您正在加快进程,因为您不会经常更改less_likely_to_change.txt。
https://stackoverflow.com/questions/58645433
复制相似问题