পাইথন প্রকল্পগুলির জন্য ডকার চিত্র তৈরি করার সময় প্যাকেজগুলি পুনরায় ইনস্টল করবেন কীভাবে?


128

আমার ডকফেরফিল কিছু একটা

FROM my/base

ADD . /srv
RUN pip install -r requirements.txt
RUN python setup.py install

ENTRYPOINT ["run_server"]

আমি যখনই একটি নতুন চিত্র তৈরি করি তখন নির্ভরতা পুনরায় ইনস্টল করতে হয় যা আমার অঞ্চলে খুব ধীর হতে পারে।

cacheযে প্যাকেজগুলি ইনস্টল করা হয়েছে সেগুলি সম্পর্কে আমি মনে করি এক উপায় হ'ল my/baseনতুন চিত্র সহ চিত্রটিকে ওভাররাইড করা :

docker build -t new_image_1 .
docker tag new_image_1 my/base

সুতরাং পরের বার যখন আমি এই ডকফাইফাইলটি তৈরি করব তখন আমার / বেসে ইতিমধ্যে কিছু প্যাকেজ ইনস্টল করা আছে।

তবে এই সমাধানটিতে দুটি সমস্যা রয়েছে:

  1. কোনও বেস ইমেজ ওভাররাইড করা সর্বদা সম্ভব নয়
  2. নতুন চিত্রগুলি স্তরযুক্ত হওয়ায় বেস চিত্রটি আরও বড়ো আকারে বড় হয়

তাহলে এই সমস্যাটি সমাধান করার জন্য এর চেয়ে ভাল সমাধান আমি আর কী করতে পারি?

সম্পাদনা ##:

আমার মেশিনে ডকার সম্পর্কে কিছু তথ্য:

  test  docker version
Client version: 1.1.2
Client API version: 1.13
Go version (client): go1.2.1
Git commit (client): d84a070
Server version: 1.1.2
Server API version: 1.13
Go version (server): go1.2.1
Git commit (server): d84a070
  test  docker info
Containers: 0
Images: 56
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Dirs: 56
Execution Driver: native-0.2
Kernel Version: 3.13.0-29-generic
WARNING: No swap limit support

আপনি নিজের চিত্রটি নির্মাণ শেষ করার পরে কি মধ্যবর্তী চিত্র মুছবেন?
Regan

অবশ্যই তা নয়, তবে এটি অপ্রাসঙ্গিক কারণ আমি যখন কোনও চিত্র পুনর্নির্মাণ করি তখনও আমি my/base
মূলটির

উত্তর:


139

ডকফাইফিল তৈরির চেষ্টা করুন যা দেখতে এরকম কিছু দেখাচ্ছে:

FROM my/base

WORKDIR /srv
ADD ./requirements.txt /srv/requirements.txt
RUN pip install -r requirements.txt
ADD . /srv
RUN python setup.py install

ENTRYPOINT ["run_server"]

requirements.txtঅন্যান্য কোড ফাইলগুলি .পরিবর্তন করা হয়েছে কি না তা নির্বিশেষে ডকার পিপ ইনস্টলের সময় ক্যাশে ব্যবহার করবেন । এখানে একটি উদাহরণ।


এখানে একটি সহজ Hello, World!প্রোগ্রাম:

$ tree
.
├── Dockerfile
├── requirements.txt
└── run.py   

0 directories, 3 file

# Dockerfile

FROM dockerfile/python
WORKDIR /srv
ADD ./requirements.txt /srv/requirements.txt
RUN pip install -r requirements.txt
ADD . /srv
CMD python /srv/run.py

# requirements.txt
pytest==2.3.4

# run.py
print("Hello, World")

ডকার বিল্ডের আউটপুট:

Step 1 : WORKDIR /srv
---> Running in 22d725d22e10
---> 55768a00fd94
Removing intermediate container 22d725d22e10
Step 2 : ADD ./requirements.txt /srv/requirements.txt
---> 968a7c3a4483
Removing intermediate container 5f4e01f290fd
Step 3 : RUN pip install -r requirements.txt
---> Running in 08188205e92b
Downloading/unpacking pytest==2.3.4 (from -r requirements.txt (line 1))
  Running setup.py (path:/tmp/pip_build_root/pytest/setup.py) egg_info for package pytest
....
Cleaning up...
---> bf5c154b87c9
Removing intermediate container 08188205e92b
Step 4 : ADD . /srv
---> 3002a3a67e72
Removing intermediate container 83defd1851d0
Step 5 : CMD python /srv/run.py
---> Running in 11e69b887341
---> 5c0e7e3726d6
Removing intermediate container 11e69b887341
Successfully built 5c0e7e3726d6

আসুন পরিবর্তন করুন run.py:

# run.py
print("Hello, Python")

আবার তৈরি করার চেষ্টা করুন, নীচে আউটপুটটি দেওয়া হচ্ছে:

Sending build context to Docker daemon  5.12 kB
Sending build context to Docker daemon 
Step 0 : FROM dockerfile/python
---> f86d6993fc7b
Step 1 : WORKDIR /srv
---> Using cache
---> 55768a00fd94
Step 2 : ADD ./requirements.txt /srv/requirements.txt
---> Using cache
---> 968a7c3a4483
Step 3 : RUN pip install -r requirements.txt
---> Using cache
---> bf5c154b87c9
Step 4 : ADD . /srv
---> 9cc7508034d6
Removing intermediate container 0d7cf71eb05e
Step 5 : CMD python /srv/run.py
---> Running in f25c21135010
---> 4ffab7bc66c7
Removing intermediate container f25c21135010
Successfully built 4ffab7bc66c7

আপনি উপরে দেখতে পারেন যে এই সময় ডকার বিল্ড করার সময় ক্যাশে ব্যবহার করে uses এখন, আপডেট করা যাক requirements.txt:

# requirements.txt

pytest==2.3.4
ipython

নীচে ডকার বিল্ডের আউটপুট দেওয়া হল:

Sending build context to Docker daemon  5.12 kB
Sending build context to Docker daemon 
Step 0 : FROM dockerfile/python
---> f86d6993fc7b
Step 1 : WORKDIR /srv
---> Using cache
---> 55768a00fd94
Step 2 : ADD ./requirements.txt /srv/requirements.txt
---> b6c19f0643b5
Removing intermediate container a4d9cb37dff0
Step 3 : RUN pip install -r requirements.txt
---> Running in 4b7a85a64c33
Downloading/unpacking pytest==2.3.4 (from -r requirements.txt (line 1))
  Running setup.py (path:/tmp/pip_build_root/pytest/setup.py) egg_info for package pytest

Downloading/unpacking ipython (from -r requirements.txt (line 2))
Downloading/unpacking py>=1.4.12 (from pytest==2.3.4->-r requirements.txt (line 1))
  Running setup.py (path:/tmp/pip_build_root/py/setup.py) egg_info for package py

Installing collected packages: pytest, ipython, py
  Running setup.py install for pytest

Installing py.test script to /usr/local/bin
Installing py.test-2.7 script to /usr/local/bin
  Running setup.py install for py

Successfully installed pytest ipython py
Cleaning up...
---> 23a1af3df8ed
Removing intermediate container 4b7a85a64c33
Step 4 : ADD . /srv
---> d8ae270eca35
Removing intermediate container 7f003ebc3179
Step 5 : CMD python /srv/run.py
---> Running in 510359cf9e12
---> e42fc9121a77
Removing intermediate container 510359cf9e12
Successfully built e42fc9121a77

লক্ষ্য করুন কীভাবে ডক পিপ ইনস্টলের সময় ক্যাশে ব্যবহার করেননি। যদি এটি কাজ না করে তবে আপনার ডকার সংস্করণটি পরীক্ষা করুন।

Client version: 1.1.2
Client API version: 1.13
Go version (client): go1.2.1
Git commit (client): d84a070
Server version: 1.1.2
Server API version: 1.13
Go version (server): go1.2.1
Git commit (server): d84a070

2
এটি কাজ করে বলে মনে হচ্ছে না, কারণ ডক যখনই কোনও ADDনির্দেশ দেখেন , ক্যাশে অবৈধ হয়।
satoru

1
আমি নিশ্চিত না কেন এটি কাজ করে না। তবে প্রয়োজনীয়তাগুলিতে কোনও পরিবর্তন হয়নি ADD ./requirements.txt /srv/requirements.txtt txt (<src> চালু ), তবে ডকার অবশ্যই ক্যাশে ব্যবহার করবে। ডকফার্মিল নথিতে সেকিটন যুক্ত দেখুন ।
ন্যাসিয়ট

16
হ্যাঁ প্রয়োজনীয়তা.টিএসটি পরিবর্তিত না হলে এটি ক্যাশে ব্যবহার করবে। তবে প্রয়োজনীয়তা। টেক্সট পরিবর্তন হলে সমস্ত প্রয়োজনীয়তা ডাউনলোড হয়। ক্যাশে থেকে লোড করার জন্য ডিকার পাত্রে কোনও পাইপ ক্যাশে ভলিউম মাউন্ট করার কোনও উপায় আছে কি?
জিতু

7
এই উত্তরের মূলটি হ'ল আপনি প্রয়োজনীয়গুলি যুক্ত করুন ADD requirements.txt /srvt টেক্সট (আপনি পিপ চালানোর আগে RUN pip install -r requirements.txt) ( এবং পিপ চালানোর পরে অন্য সমস্ত ফাইল যুক্ত করুন Thus সুতরাং, সেগুলি নিম্নলিখিত ক্রমে থাকা উচিত: (1) ADD requirements.txt /srv; (2) RUN pip install -r requirements.txt; ( 3)ADD . /srv
engelen

2
অনুগ্রহ করে নোট করুন যে এডিডি পরিবর্তে কপি ব্যবহার করার সময় এটি কার্যকর হয় না
২৮:১৪ এ ভদ্রলোক

29

নেটওয়ার্ক ক্রিয়াকলাপ হ্রাস করতে, আপনি pipআপনার হোস্ট মেশিনে থাকা একটি ক্যাশে ডিরেক্টরিতে নির্দেশ করতে পারেন ।

আপনার হোস্টের পাইপ ক্যাশে ডিরেক্টরিটি আপনার ধারকটির পাইপ ক্যাশে ডিরেক্টরিতে মাউন্ট করা বাইন্ড দিয়ে আপনার ডকার ধারকটি চালান। docker runকমান্ডটি দেখতে এইরকম হওয়া উচিত:

docker run -v $HOME/.cache/pip-docker/:/root/.cache/pip image_1

তারপরে আপনার ডকফাইফিলে আদেশের পরিবর্তে ENTRYPOINTবিবৃতি (বা CMDবিবৃতি) এর অংশ হিসাবে আপনার প্রয়োজনীয়তা ইনস্টল করুন RUN। এটি গুরুত্বপূর্ণ, কারণ (মন্তব্যে নির্দেশিত হিসাবে) চিত্র তৈরির সময় মাউন্টটি পাওয়া যায় না (যখন RUNবিবৃতি কার্যকর করা হয়)। ডকার ফাইলটি দেখতে এমন হওয়া উচিত:

FROM my/base

ADD . /srv

ENTRYPOINT ["sh", "-c", "pip install -r requirements.txt && python setup.py install && run_server"]

4
ওপি তার ব্যবহারের ক্ষেত্রে কী সন্ধান করছে তা নয় তবে আপনি যদি কোনও বিল্ড সার্ভার তৈরি করেন তবে এটি দুর্দান্ত ধারণা
6

2
এটি সমস্যার একটি রেসিপি বলে মনে হচ্ছে, বিশেষত ডিফল্ট হোস্ট ক্যাশে নির্দেশ করার পরামর্শ। আপনি সম্ভাব্যভাবে খিলান-নির্দিষ্ট প্যাকেজগুলি মিশ্রণ করছেন।
গিয়াকোমো লাকাভা

@ জিয়াকোমো লাকাভা ধন্যবাদ, এটি একটি খুব ভাল বিষয়। আমি আমার উত্তরটি সামঞ্জস্য করেছি এবং সেই অংশটি সরিয়ে দিয়েছি যা হোস্টের ক্যাশে ডিরেক্টরিটি পুনরায় ব্যবহার করার পরামর্শ দিয়েছিল।
জাকুব কুকুল

24

আমি বুঝতে পারি এই প্রশ্নের ইতিমধ্যে কয়েকটি জনপ্রিয় উত্তর রয়েছে has প্যাকেজ পরিচালকদের জন্য ফাইলগুলি ক্যাশে করার একটি নতুন উপায় আছে। আমি মনে করি বিল্ডকিট আরও মানক হয়ে উঠলে ভবিষ্যতে এটি একটি উত্তরের উত্তর হতে পারে।

Docker 18,09 পর্যন্ত বিভিন্ন জন্য পরীক্ষামূলক সহায়তা হয় BuildKit । BuildKit সহ Dockerfile মধ্যে কিছু নতুন বৈশিষ্ট্য জন্য সমর্থন যোগ করা বাহ্যিক ভলিউম মাউন্ট জন্য পরীক্ষামূলক সহায়তা মধ্যে RUNধাপ। এটি আমাদের মতো জিনিসগুলির জন্য ক্যাশে তৈরি করতে দেয় $HOME/.cache/pip/

আমরা requirements.txtউদাহরণ হিসাবে নিম্নলিখিত ফাইলটি ব্যবহার করব :

Click==7.0
Django==2.2.3
django-appconf==1.0.3
django-compressor==2.3
django-debug-toolbar==2.0
django-filter==2.2.0
django-reversion==3.0.4
django-rq==2.1.0
pytz==2019.1
rcssmin==1.0.6
redis==3.3.4
rjsmin==1.1.0
rq==1.1.0
six==1.12.0
sqlparse==0.3.0

পাইথনের একটি আদর্শ উদাহরণ Dockerfileহতে পারে:

FROM python:3.7
WORKDIR /usr/src/app
COPY requirements.txt /usr/src/app/
RUN pip install -r requirements.txt
COPY . /usr/src/app

DOCKER_BUILDKITপরিবেশের ভেরিয়েবলটি ব্যবহার করে বিল্ডকিট সক্ষম করে আমরা pipপ্রায় 65 সেকেন্ডের মধ্যে আবদ্ধ পদক্ষেপটি তৈরি করতে পারি :

$ export DOCKER_BUILDKIT=1
$ docker build -t test .
[+] Building 65.6s (10/10) FINISHED                                                                                                                                             
 => [internal] load .dockerignore                                                                                                                                          0.0s
 => => transferring context: 2B                                                                                                                                            0.0s
 => [internal] load build definition from Dockerfile                                                                                                                       0.0s
 => => transferring dockerfile: 120B                                                                                                                                       0.0s
 => [internal] load metadata for docker.io/library/python:3.7                                                                                                              0.5s
 => CACHED [1/4] FROM docker.io/library/python:3.7@sha256:6eaf19442c358afc24834a6b17a3728a45c129de7703d8583392a138ecbdb092                                                 0.0s
 => [internal] load build context                                                                                                                                          0.6s
 => => transferring context: 899.99kB                                                                                                                                      0.6s
 => CACHED [internal] helper image for file operations                                                                                                                     0.0s
 => [2/4] COPY requirements.txt /usr/src/app/                                                                                                                              0.5s
 => [3/4] RUN pip install -r requirements.txt                                                                                                                             61.3s
 => [4/4] COPY . /usr/src/app                                                                                                                                              1.3s
 => exporting to image                                                                                                                                                     1.2s
 => => exporting layers                                                                                                                                                    1.2s
 => => writing image sha256:d66a2720e81530029bf1c2cb98fb3aee0cffc2f4ea2aa2a0760a30fb718d7f83                                                                               0.0s
 => => naming to docker.io/library/test                                                                                                                                    0.0s

এখন, আমরা পরীক্ষামূলক শিরোনাম যুক্ত করি এবং RUNপাইথন প্যাকেজগুলি ক্যাশে করার পদক্ষেপটি সংশোধন করি :

# syntax=docker/dockerfile:experimental

FROM python:3.7
WORKDIR /usr/src/app
COPY requirements.txt /usr/src/app/
RUN --mount=type=cache,target=/root/.cache/pip pip install -r requirements.txt
COPY . /usr/src/app

এগিয়ে যান এবং এখন অন্য বিল্ড করুন। এটি একই পরিমাণ সময় নিতে হবে। তবে এবার এটি আমাদের নতুন ক্যাশে মাউন্টে পাইথন প্যাকেজগুলি ক্যাশে করছে:

$ docker build -t pythontest .
[+] Building 60.3s (14/14) FINISHED                                                                                                                                             
 => [internal] load build definition from Dockerfile                                                                                                                       0.0s
 => => transferring dockerfile: 120B                                                                                                                                       0.0s
 => [internal] load .dockerignore                                                                                                                                          0.0s
 => => transferring context: 2B                                                                                                                                            0.0s
 => resolve image config for docker.io/docker/dockerfile:experimental                                                                                                      0.5s
 => CACHED docker-image://docker.io/docker/dockerfile:experimental@sha256:9022e911101f01b2854c7a4b2c77f524b998891941da55208e71c0335e6e82c3                                 0.0s
 => [internal] load .dockerignore                                                                                                                                          0.0s
 => [internal] load build definition from Dockerfile                                                                                                                       0.0s
 => => transferring dockerfile: 120B                                                                                                                                       0.0s
 => [internal] load metadata for docker.io/library/python:3.7                                                                                                              0.5s
 => CACHED [1/4] FROM docker.io/library/python:3.7@sha256:6eaf19442c358afc24834a6b17a3728a45c129de7703d8583392a138ecbdb092                                                 0.0s
 => [internal] load build context                                                                                                                                          0.7s
 => => transferring context: 899.99kB                                                                                                                                      0.6s
 => CACHED [internal] helper image for file operations                                                                                                                     0.0s
 => [2/4] COPY requirements.txt /usr/src/app/                                                                                                                              0.6s
 => [3/4] RUN --mount=type=cache,target=/root/.cache/pip pip install -r requirements.txt                                                                                  53.3s
 => [4/4] COPY . /usr/src/app                                                                                                                                              2.6s
 => exporting to image                                                                                                                                                     1.2s
 => => exporting layers                                                                                                                                                    1.2s
 => => writing image sha256:0b035548712c1c9e1c80d4a86169c5c1f9e94437e124ea09e90aea82f45c2afc                                                                               0.0s
 => => naming to docker.io/library/test                                                                                                                                    0.0s

প্রায় 60 সেকেন্ড। আমাদের প্রথম বিল্ড অনুরূপ।

requirements.txtক্যাশে অবৈধকরণ বাধ্য করার জন্য (যেমন দুটি প্যাকেজের মধ্যে একটি নতুন লাইন যুক্ত করা) আবার একটি ছোট পরিবর্তন করুন এবং আবার চালনা করুন:

$ docker build -t pythontest .
[+] Building 15.9s (14/14) FINISHED                                                                                                                                             
 => [internal] load build definition from Dockerfile                                                                                                                       0.0s
 => => transferring dockerfile: 120B                                                                                                                                       0.0s
 => [internal] load .dockerignore                                                                                                                                          0.0s
 => => transferring context: 2B                                                                                                                                            0.0s
 => resolve image config for docker.io/docker/dockerfile:experimental                                                                                                      1.1s
 => CACHED docker-image://docker.io/docker/dockerfile:experimental@sha256:9022e911101f01b2854c7a4b2c77f524b998891941da55208e71c0335e6e82c3                                 0.0s
 => [internal] load build definition from Dockerfile                                                                                                                       0.0s
 => => transferring dockerfile: 120B                                                                                                                                       0.0s
 => [internal] load .dockerignore                                                                                                                                          0.0s
 => [internal] load metadata for docker.io/library/python:3.7                                                                                                              0.5s
 => CACHED [1/4] FROM docker.io/library/python:3.7@sha256:6eaf19442c358afc24834a6b17a3728a45c129de7703d8583392a138ecbdb092                                                 0.0s
 => CACHED [internal] helper image for file operations                                                                                                                     0.0s
 => [internal] load build context                                                                                                                                          0.7s
 => => transferring context: 899.99kB                                                                                                                                      0.7s
 => [2/4] COPY requirements.txt /usr/src/app/                                                                                                                              0.6s
 => [3/4] RUN --mount=type=cache,target=/root/.cache/pip pip install -r requirements.txt                                                                                   8.8s
 => [4/4] COPY . /usr/src/app                                                                                                                                              2.1s
 => exporting to image                                                                                                                                                     1.1s
 => => exporting layers                                                                                                                                                    1.1s
 => => writing image sha256:fc84cd45482a70e8de48bfd6489e5421532c2dd02aaa3e1e49a290a3dfb9df7c                                                                               0.0s
 => => naming to docker.io/library/test                                                                                                                                    0.0s

প্রায় 16 সেকেন্ড!

আমরা এই স্পিডআপটি পাচ্ছি কারণ আমরা আর পাইথন প্যাকেজগুলি আর ডাউনলোড করি না। এগুলি প্যাকেজ ম্যানেজার দ্বারা ক্যাশে করা হয়েছিল ( pipএই ক্ষেত্রে) এবং ক্যাশে ভলিউম মাউন্টে সংরক্ষণ করা হয়েছিল। ভলিউম মাউন্ট রান পদক্ষেপে সরবরাহ করা হয়েছে যাতে pipআমাদের ইতিমধ্যে ডাউনলোড করা প্যাকেজগুলির পুনরায় ব্যবহার করতে পারে। এটি কোনও ডকার লেয়ার ক্যাচিংয়ের বাইরে ঘটে

লাভ বৃহত্তর উপর আরও ভাল হওয়া উচিত requirements.txt

মন্তব্য:

  • এটি পরীক্ষামূলক ডকফরফাইল সিনট্যাক্স এবং এটির মতো আচরণ করা উচিত। আপনি এই মুহূর্তে উত্পাদনের সাথে এটি তৈরি করতে চাইবেন না।
  • বিল্ডকিট স্টাফ ডকার রচনা বা অন্যান্য সরঞ্জামগুলির অধীনে কাজ করে না যা এই মুহুর্তে সরাসরি ডকার এপিআই ব্যবহার করে। ১.২.২.০ হিসাবে এখন ডকার রচনায় এটির জন্য সমর্থন রয়েছে। দেখুন কীভাবে আপনি ডকার-রচনা দিয়ে বিল্ডকিট সক্ষম করবেন?
  • এই মুহুর্তে ক্যাশে পরিচালিত করার জন্য কোনও সরাসরি ইন্টারফেস নেই। এটি যখন আপনি একটি করবেন শুদ্ধ হয় docker system prune -a

আশা করি, এই বৈশিষ্ট্যগুলি এটি বিল্ডিংয়ের জন্য ডকারে পরিণত করবে এবং বিল্ডকিট ডিফল্ট হয়ে উঠবে। যদি / কখন ঘটে তবে আমি এই উত্তরটি আপডেট করার চেষ্টা করব।


আমি নিশ্চিত করতে পারি যে এই সমাধানটি খুব ভালভাবে কাজ করে। আমার বিল্ডটি এক মিনিটের উপর থেকে নেমেছে মাত্র ২.২ সেকেন্ডে। ধন্যবাদ @ অ্যান্ডি-শিন
Kwuite

2
এছাড়াও Now Docker-কম্পোজ: stackoverflow.com/questions/58592259/...
Rexcirus

দ্রষ্টব্য: আপনি যদি ডকার চালানোর জন্য SUDO ব্যবহার করে থাকেন তবে আপনার সম্ভবত এটি করা দরকার: sudo DOCKER_BUILDKIT = 1 ...
Vinícius M

আমি এই ত্রুটিটি পাচ্ছি: - সীমান্তের ডকফেরফিল.ভ0 দিয়ে সমাধান করতে ব্যর্থ: এলএলবি সংজ্ঞা তৈরি করতে ব্যর্থ হয়েছে: ডকফেরফিল পার্স ত্রুটি লাইন 10: অজানা পতাকা: মাউন্ট
ময়ূর ডাঙ্গার

আপনি যে শব্দটি Dockerfileডোকর সংস্করণটির শীর্ষে মন্তব্যটি মিস করেছেন তা খুব পুরানো। আপনার সমস্ত ডিবাগিং তথ্য দিয়ে আমি একটি নতুন প্রশ্ন তৈরি করব।
অ্যান্ডি শিন

-10

আমি দেখতে পেলাম যে আরও ভাল উপায় হ'ল পাইথন সাইট-প্যাকেজ ডিরেক্টরিটি ভলিউম হিসাবে যুক্ত করা।

services:
    web:
        build: .
        command: python manage.py runserver 0.0.0.0:8000
        volumes:
            - .:/code
            -  /usr/local/lib/python2.7/site-packages/

এইভাবে আমি সম্পূর্ণ পুনর্নির্মাণ না করে কেবল নতুন লাইব্রেরি ইনস্টল করতে পাইপ করতে পারি।

সম্পাদনা : এই উত্তরটিকে উপেক্ষা করুন, উপরের জকুকুলের উত্তর আমার পক্ষে কাজ করেছে। আমার অভিপ্রায়টি ছিল সাইট-প্যাকেজ ফোল্ডারটি ক্যাশে করা । এটি আরও কিছু দেখতে লাগত:

volumes:
   - .:/code
   - ./cached-packages:/usr/local/lib/python2.7/site-packages/

ডাউনলোড ফোল্ডারটি ক্যাচ করা যদিও খুব ক্লিনার। এটি চাকার ক্যাশে করে, তাই এটি সঠিকভাবে কাজটি অর্জন করে।


2
এবং আপনি যখন অন্য কোনও মেশিনে এই ডকফর্মিল তৈরি করার চেষ্টা করবেন তখন কী ঘটে। এটি একটি টেকসই সমাধান নয়।
অ্যারন ম্যাকমিলিন

সত্যই বিভ্রান্ত, এটি বাগি হয়ে উঠেছে এবং কেন আমি আসলে তা নিশ্চিত ছিলাম না। আপনি আরও কিছু বিবরণ দিতে পারেন?
jaywhy13

3
আপনার ডকার চিত্রটি হোস্ট সিস্টেমের অবস্থার উপর নির্ভর করে। এটি ডকারের বেশিরভাগ ইউটিলিটিটি সমর্থন করে। চিত্রটির প্রয়োজনীয় সমস্ত কিছু এতে ইনস্টল করা উচিত। সমস্ত নির্ভরতা ইনস্টল করতে ডকফায়াইল ব্যবহার করুন। আপনি যদি প্যাকেজগুলি পুনরায় ডাউনলোড করা এড়াতে চান তবে প্রতিবার জকিউকুল থেকে পাইপ ক্যাশে মাউন্ট করার জন্য উত্তরটি তৈরি করে নেওয়ার উপায়।
অ্যারন ম্যাকমিলিন

2
লাইটবুলব সবেমাত্র ধন্যবাদ ছেড়ে গেল। আমি আসলে ভিএম থেকে সাইট-প্যাকেজ ডিরেক্টরিটি মাউন্ট করার চেষ্টা করছিলাম, হোস্টটি নয়। বেশ তদারকি। আমি মনে করি আমি আত্মার দ্বারা জাকুলকুলের পরামর্শ মতো একই কাজ করার চেষ্টা করছিলাম। স্পষ্টতার জন্য ধন্যবাদ!
jaywhy13

অ্যারোন এমসি মিলিলিন @ তিনি হোস্টের কোনও পথে নির্ভর করছেন না। তিনি একটি বেনাম ভলিউমে ধারকটিতে সাইট-প্যাকেজগুলি মাউন্ট করছেন। তবুও একটি খারাপ ধারণা
রুহোলা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.