অ্যালপাইন লিনাক্সে পান্ডা ইনস্টল করতে কেন যুগে যুগে সময় লাগে


103

আমি লক্ষ্য করেছি যে বেস ওএস অ্যালপাইন বনাম সেন্টস বা ডেবিয়ান ব্যবহার করে ডকার পাত্রে পান্ডাস এবং নম্পি (এটি নির্ভরতা) ইনস্টল করতে অনেক বেশি সময় লাগে। সময়ের পার্থক্য প্রদর্শনের জন্য আমি নীচে একটি সামান্য পরীক্ষা তৈরি করেছি। পান্ডা এবং নম্পি ইনস্টল করতে বিল্ড নির্ভরতা আপডেট করতে এবং ডাউনলোড করতে অ্যালপাইন লাগে কয়েক সেকেন্ড বাদে, কেন সেটআপ.পি ডেবিয়ান ইনস্টলের চেয়ে 70x বেশি সময় নেয়?

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

ডকফেরফাইল.ডিবিয়ান

FROM python:3.6.4-slim-jessie

RUN pip install pandas

পান্ডাস এবং নম্পি দিয়ে দেবিয়ান চিত্র তৈরি করুন:

[PandasDockerTest] time docker build -t debian-pandas -f Dockerfile.debian . --no-cache
    Sending build context to Docker daemon  3.072kB
    Step 1/2 : FROM python:3.6.4-slim-jessie
     ---> 43431c5410f3
    Step 2/2 : RUN pip install pandas
     ---> Running in 2e4c030f8051
    Collecting pandas
      Downloading pandas-0.22.0-cp36-cp36m-manylinux1_x86_64.whl (26.2MB)
    Collecting numpy>=1.9.0 (from pandas)
      Downloading numpy-1.14.1-cp36-cp36m-manylinux1_x86_64.whl (12.2MB)
    Collecting pytz>=2011k (from pandas)
      Downloading pytz-2018.3-py2.py3-none-any.whl (509kB)
    Collecting python-dateutil>=2 (from pandas)
      Downloading python_dateutil-2.6.1-py2.py3-none-any.whl (194kB)
    Collecting six>=1.5 (from python-dateutil>=2->pandas)
      Downloading six-1.11.0-py2.py3-none-any.whl
    Installing collected packages: numpy, pytz, six, python-dateutil, pandas
    Successfully installed numpy-1.14.1 pandas-0.22.0 python-dateutil-2.6.1 pytz-2018.3 six-1.11.0
    Removing intermediate container 2e4c030f8051
     ---> a71e1c314897
    Successfully built a71e1c314897
    Successfully tagged debian-pandas:latest
    docker build -t debian-pandas -f Dockerfile.debian . --no-cache  0.07s user 0.06s system 0% cpu 13.605 total

ডকফেরফাইল.পালাইন

FROM python:3.6.4-alpine3.7

RUN apk --update add --no-cache g++

RUN pip install pandas

পান্ডা এবং নম্পি দিয়ে আলপাইন চিত্র তৈরি করুন:

[PandasDockerTest] time docker build -t alpine-pandas -f Dockerfile.alpine . --no-cache
Sending build context to Docker daemon   16.9kB
Step 1/3 : FROM python:3.6.4-alpine3.7
 ---> 4b00a94b6f26
Step 2/3 : RUN apk --update add --no-cache g++
 ---> Running in 4b0c32551e3f
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
(1/17) Upgrading musl (1.1.18-r2 -> 1.1.18-r3)
(2/17) Installing libgcc (6.4.0-r5)
(3/17) Installing libstdc++ (6.4.0-r5)
(4/17) Installing binutils-libs (2.28-r3)
(5/17) Installing binutils (2.28-r3)
(6/17) Installing gmp (6.1.2-r1)
(7/17) Installing isl (0.18-r0)
(8/17) Installing libgomp (6.4.0-r5)
(9/17) Installing libatomic (6.4.0-r5)
(10/17) Installing pkgconf (1.3.10-r0)
(11/17) Installing mpfr3 (3.1.5-r1)
(12/17) Installing mpc1 (1.0.3-r1)
(13/17) Installing gcc (6.4.0-r5)
(14/17) Installing musl-dev (1.1.18-r3)
(15/17) Installing libc-dev (0.7.1-r0)
(16/17) Installing g++ (6.4.0-r5)
(17/17) Upgrading musl-utils (1.1.18-r2 -> 1.1.18-r3)
Executing busybox-1.27.2-r7.trigger
OK: 184 MiB in 50 packages
Removing intermediate container 4b0c32551e3f
 ---> be26c3bf4e42
Step 3/3 : RUN pip install pandas
 ---> Running in 36f6024e5e2d
Collecting pandas
  Downloading pandas-0.22.0.tar.gz (11.3MB)
Collecting python-dateutil>=2 (from pandas)
  Downloading python_dateutil-2.6.1-py2.py3-none-any.whl (194kB)
Collecting pytz>=2011k (from pandas)
  Downloading pytz-2018.3-py2.py3-none-any.whl (509kB)
Collecting numpy>=1.9.0 (from pandas)
  Downloading numpy-1.14.1.zip (4.9MB)
Collecting six>=1.5 (from python-dateutil>=2->pandas)
  Downloading six-1.11.0-py2.py3-none-any.whl
Building wheels for collected packages: pandas, numpy
  Running setup.py bdist_wheel for pandas: started
  Running setup.py bdist_wheel for pandas: still running...
  Running setup.py bdist_wheel for pandas: still running...
  Running setup.py bdist_wheel for pandas: still running...
  Running setup.py bdist_wheel for pandas: still running...
  Running setup.py bdist_wheel for pandas: still running...
  Running setup.py bdist_wheel for pandas: still running...
  Running setup.py bdist_wheel for pandas: finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/e8/ed/46/0596b51014f3cc49259e52dff9824e1c6fe352048a2656fc92
  Running setup.py bdist_wheel for numpy: started
  Running setup.py bdist_wheel for numpy: still running...
  Running setup.py bdist_wheel for numpy: still running...
  Running setup.py bdist_wheel for numpy: still running...
  Running setup.py bdist_wheel for numpy: finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/9d/cd/e1/4d418b16ea662e512349ef193ed9d9ff473af715110798c984
Successfully built pandas numpy
Installing collected packages: six, python-dateutil, pytz, numpy, pandas
Successfully installed numpy-1.14.1 pandas-0.22.0 python-dateutil-2.6.1 pytz-2018.3 six-1.11.0
Removing intermediate container 36f6024e5e2d
 ---> a93c59e6a106
Successfully built a93c59e6a106
Successfully tagged alpine-pandas:latest
docker build -t alpine-pandas -f Dockerfile.alpine . --no-cache  0.54s user 0.33s system 0% cpu 16:08.47 total

4
.apk এখন উপলভ্য, সুতরাং শূন্যটি উত্স থেকে তৈরি করা দরকার - pkgs.lpinelinux.org/packages?name= * পান্ডাস এবং শাখা = প্রান্ত
jtlz2

4
@ jtlz2, পান্ডাস আলপাইন শাখার প্রান্তে পাওয়া যায় না। যা দুঃখের বিষয় ...
fccoelho

@fccoelho এটি এখন আবার পাওয়া যায়!
jtlz2

উত্তর:


65

দেবিয়ান ভিত্তিক চিত্রগুলি কেবল বিন্যাস python pipসহ প্যাকেজ ইনস্টল করতে ব্যবহার .whlকরে:

  Downloading pandas-0.22.0-cp36-cp36m-manylinux1_x86_64.whl (26.2MB)
  Downloading numpy-1.14.1-cp36-cp36m-manylinux1_x86_64.whl (12.2MB)

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

চাকা প্যাকেজগুলি pandasএবং numpyআলপাইন প্ল্যাটফর্মের ভিত্তিতে চিত্রগুলিতে সমর্থিত নয়। এই কারণেই যখন আমরা python pipবিল্ডিং প্রক্রিয়া চলাকালীন তাদের ইনস্টল করি , আমরা সর্বদা তাদের আলপাইন উত্স ফাইল থেকে সংকলন করি:

  Downloading pandas-0.22.0.tar.gz (11.3MB)
  Downloading numpy-1.14.1.zip (4.9MB)

এবং আমরা চিত্র নির্মাণের সময় নীচের অভ্যন্তর পাত্রে দেখতে পারি:

/ # ps aux
PID   USER     TIME   COMMAND
    1 root       0:00 /bin/sh -c pip install pandas
    7 root       0:04 {pip} /usr/local/bin/python /usr/local/bin/pip install pandas
   21 root       0:07 /usr/local/bin/python -c import setuptools, tokenize;__file__='/tmp/pip-build-en29h0ak/pandas/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n
  496 root       0:00 sh
  660 root       0:00 /bin/sh -c gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DTHREAD_STACK_SIZE=0x100000 -fPIC -Ibuild/src.linux-x86_64-3.6/numpy/core/src/pri
  661 root       0:00 gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DTHREAD_STACK_SIZE=0x100000 -fPIC -Ibuild/src.linux-x86_64-3.6/numpy/core/src/private -Inump
  662 root       0:00 /usr/libexec/gcc/x86_64-alpine-linux-musl/6.4.0/cc1 -quiet -I build/src.linux-x86_64-3.6/numpy/core/src/private -I numpy/core/include -I build/src.linux-x86_64-3.6/numpy/core/includ
  663 root       0:00 ps aux

আমরা যদি কিছু সংশোধন করি Dockerfile:

FROM python:3.6.4-alpine3.7
RUN apk add --no-cache g++ wget
RUN wget https://pypi.python.org/packages/da/c6/0936bc5814b429fddb5d6252566fe73a3e40372e6ceaf87de3dec1326f28/pandas-0.22.0-cp36-cp36m-manylinux1_x86_64.whl
RUN pip install pandas-0.22.0-cp36-cp36m-manylinux1_x86_64.whl

আমরা নিম্নলিখিত ত্রুটি পেয়েছি:

Step 4/4 : RUN pip install pandas-0.22.0-cp36-cp36m-manylinux1_x86_64.whl
 ---> Running in 0faea63e2bda
pandas-0.22.0-cp36-cp36m-manylinux1_x86_64.whl is not a supported wheel on this platform.
The command '/bin/sh -c pip install pandas-0.22.0-cp36-cp36m-manylinux1_x86_64.whl' returned a non-zero code: 1

দুর্ভাগ্যক্রমে, pandasআলপাইন চিত্রে ইনস্টল করার একমাত্র উপায় হ'ল বিল্ড শেষ না হওয়া পর্যন্ত অপেক্ষা করা।

অবশ্যই আপনি যদি pandasসিআই এর সাথে আলপাইন চিত্রটি ব্যবহার করতে চান উদাহরণস্বরূপ, এটি করার সর্বোত্তম উপায় হ'ল এটি একবার সংকলন করা, যেকোন রেজিস্ট্রিতে চাপ দেওয়া এবং এটি আপনার প্রয়োজনের জন্য বেস চিত্র হিসাবে ব্যবহার করা।

সম্পাদনা: আপনি যদি আলপাইন চিত্রটি ব্যবহার করতে চান তবে pandasআমার নিকগ্রিগ / আলপাইন-পান্ডাস ডকার চিত্রটি টানতে পারেন । এটি pandasআলপাইন প্ল্যাটফর্মে প্রাক-সংকলিত একটি অজগর চিত্র । এটি আপনার সময় সাশ্রয় করা উচিত।


4
ভাল, এটা খুব খারাপ। তবে এটি দেখতে ছয়টি, পাইটজ এবং পাইথন-ডেটুটিল আলপাইনটিতে .Hl প্যাকেজ ডাউনলোড করছে। এর অর্থ কী পাণ্ডার জন্য চাকা তৈরি করা সম্ভব এবং আল্পাইনর জন্য নিম্পি, তবে এটি বর্তমানে ঘটছে না?
মোকু

না, আলপাইন প্ল্যাটফর্মের জন্য pandasএবং তার জন্য চাকা তৈরি করা সম্ভব নয় nampy। এই চাকার এটি সমর্থন করে না। আমি উত্তরে দেখিয়েছি, যখন pandasএটির চাকা প্যাকেজটি আল্পাইন চিত্রে ইনস্টল করার চেষ্টা করা হয়েছিল।
নিকগ্রিগ

@ নিকোলে কি এমন কোনও pandasবিল্ড পুনরায় ব্যবহার করার চেষ্টা করা হয়েছে যা alpineপরে তৈরি করা হয়েছে এবং পরে ক্যাশে হয়েছে? (এটি স্থানীয়ভাবে কোথাও হোস্ট করা যেতে পারে)
jtlz2

4
এই উপায়টির কারণ হ'ল এই চাকাগুলিতে বাইনারিগুলি সি / সি ++ থেকে বিল্ড থাকে এবং গ্লিবিকের সাথে সংযুক্ত থাকে তবে আলপাইনটিতে গ্লিবসি থাকে না, পরিবর্তে এটি মাসল ব্যবহার করে, যার অর্থ নতুন বাইনারিগুলি অবশ্যই সংশ্লেষ করতে হবে এবং সংশ্লেষের সাথে যুক্ত থাকতে হবে।
এইগুইক্যান্টএভেন

36

উত্তর: 3/9/2020 অনুসারে, পাইথন 3 এর জন্য, এটি এখনও হয় না!

এখানে একটি সম্পূর্ণ কাজ ডকফায়াইল:

FROM python:3.7-alpine
RUN echo "@testing http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
RUN apk add --update --no-cache py3-numpy py3-pandas@testing

বিল্ডটি সঠিক পাইথন এবং আলপাইন সংস্করণ সংখ্যার জন্য খুব সংবেদনশীল - এই ভুলটি পেয়ে ম্যাক্স লেভির ত্রুটি উস্কে দেয় so:libpython3.7m.so.1.0 (missing)- তবে উপরেরটি এখন আমার পক্ষে কাজ করে for

আমার আপডেট হওয়া ডকফাইলটি https://gist.github.com/jtlz2/b0f4bc07ce2ff04bc193337f2327c13b এ উপলব্ধ


[পূর্ববর্তী আপডেট:]

উত্তর: এটি করা হয় না!

যে কোনও অ্যালপাইন ডকফায়লে আপনি কেবল *

RUN apk add py2-numpy@community py2-scipy@community py-pandas@edge

এটি কারণ numpy, scipyএবং এখন pandasসমস্ত উপলভ্য উপর উপলব্ধ alpine:

https://pkgs.lpinelinux.org/packages?name=* দুষ্টু

https://pkgs.lpinelinux.org/packages?name=*scipy&branch=edge

https://pkgs.lpinelinux.org/packages?name=* প্যান্ডাস ও ব্রাঞ্চ=edge

প্রতিবার পুনর্নির্মাণ এড়ানো বা ডকার স্তর ব্যবহার করা এড়ানোর একটি উপায় হ'ল প্রাক বিল্ট, নেটিভ আলপাইন লিনাক্স / .apkপ্যাকেজ ব্যবহার করা, যেমন

https://github.com/sgerrand/alpine-pkg-py-pandas

https://github.com/nbgallery/apks

আপনি এইগুলি .apkএকবার তৈরি করতে পারেন এবং আপনার ডকফেরিল যেখানে আপনার পছন্দ হবে সেখানে এগুলি ব্যবহার করতে পারেন :)

এটি আপনাকে সত্যের আগে ডকারের ইমেজে সমস্ত কিছু বেক করা থেকে বাঁচায় - যেমন আপনার পছন্দ মতো কোনও ডকার ইমেজ প্রাক-বিল্ডিংয়ের নমনীয়তা।

PS আমি https://gist.github.com/jtlz2/b0f4bc07ce2ff04bc193337f2327c13b এ একটি ডকফাইফিল স্টাব রেখেছি যা চিত্রটি কীভাবে তৈরি করা যায় তা প্রায় দেখায়। এর মধ্যে রয়েছে গুরুত্বপূর্ণ পদক্ষেপগুলি (*):

RUN echo "@community http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
RUN apk update
RUN apk add --update --no-cache libgfortran

4
দেখে মনে হচ্ছে এটি সম্প্রতি সরিয়ে দেওয়া হয়েছে? pkgs.lpinelinux.org/package/edge/testing/x86/py-pandas
jtlz2

4
@ChrisWedgwood তারা সক্রিয়ভাবে এটা কাজ করছে - দেখুন github.com/alpinelinux/aports/pull/6330
jtlz2

4
@ ক্রিস ওয়েডগুড আবার কাজ করছেন, ভাই!
jtlz2


4
@ jtlz2 আমি 3.7-পাতলা-বাস্টার হাতে সুইচ এবং সবকিছু গিয়েছিলাম সহজে সেখানে pythonspeed.com/articles/base-image-python-docker-images
xristian

9

মনোযোগ সর্বশেষ আপডেটের
সাথে @ jtlz2 উত্তরটি দেখুন

সেকেলে

সুতরাং, পাই 3-পান্ডাস এবং পাই 3-নম্পি প্যাকেজগুলি পরীক্ষার আল্পাইন সংগ্রহস্থলে স্থানান্তরিত হয়েছে, সুতরাং, আপনি আপনার ডকফাইফাইলে এই লাইনগুলি যুক্ত করে এটি ডাউনলোড করতে পারেন:

RUN echo "http://dl-8.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories \
  && apk update \
  && apk add py3-numpy py3-pandas

আশা করি এটি কাউকে সাহায্য করবে!

আলপাইন প্যাকেজ লিঙ্কগুলি:
- py3-pandas
- py3-numpy

আলপাইন সংগ্রহস্থলগুলি ডক্সের তথ্য


এটি আমার পক্ষে কাজ করেছিল! আপডেট উত্তর দেওয়ার জন্য ধন্যবাদ!
Stratus3D

4
আমার উত্তরে স্থির
jtlz2

4
@ জেটিলজ ২ দুর্দান্ত, ধন্যবাদ, তবে আমি আল্পাইনের পরিবর্তে ডেবিয়ান বাস্টারে চলে গেলাম এবং আবার আলপাইন দিয়ে ইনস্টল করার চেষ্টা
করিনি

4
কেবল লক্ষ করুন যে পাই 3-পান্ডাগুলি 3.11.x এর জন্য উপলব্ধ নয়, আমি এই মন্তব্যটি লেখার সময় হিসাবে এটি কেবল 'প্রান্ত' রিলিজে রয়েছে। সম্পাদনা: স্পষ্টতই এটি বলছে যে উপরের পোস্টে, আমি ঠিক আগে এই উল্লেখটি মিস করেছি, দুঃখিত।
পঁচা

5

কেবলমাত্র এই উত্তরের কয়েকটি উত্তর এক সাথে আনতে যাচ্ছি এবং একটি বিশদ যুক্ত করব যা আমার মনে হয় মিস হয়েছে। নির্দিষ্ট পাইথন গ্রন্থাগারগুলি, বিশেষত অনুকূলিত গণিত এবং ডেটা লাইব্রেরিগুলিকে অ্যালপাইন তৈরি করতে এত বেশি সময় লাগার কারণ হ'ল এই লাইব্রেরির পাইপ চাকার ক্ষেত্রে বাইনারি সি / সি ++ থেকে প্রম্পম্পল্ড অন্তর্ভুক্ত রয়েছে এবং glibcসি স্ট্যান্ডার্ড লাইব্রেরির একটি সাধারণ সেট রয়েছে। ডেবিয়ান, ফেডোরা, সেন্টসস সমস্ত (সাধারণত) ব্যবহার করে glibcতবে হালকা ওজন ধরে রাখতে আলপাইন musl-libcপরিবর্তে ব্যবহার করে। সি / সি ++ বাইনারিগুলি glibcসিস্টেমে বিল্ড করা কোনও সিস্টেমে ছাড়া কাজ করবে না glibcএবং এটি একই রকম হয় musl

পাইপ প্রথমে সঠিক বাইনারিগুলির সাথে একটি চক্রটির সন্ধান করে, যদি এটির সন্ধান না করে তবে এটি বাইনারিগুলি সি / সি ++ উত্স থেকে সংকলন করার চেষ্টা করে এবং তাদেরকে ম্যাসেলের বিপরীতে লিঙ্ক করে। বেশিরভাগ ক্ষেত্রে, অজানা হেডার না থাকলে python3-devবা পছন্দসই সরঞ্জামগুলি তৈরি না করা পর্যন্ত এটি কাজ করবে না make

এখন রূপালী আস্তরণের বিষয়টি যেমন অন্যরা উল্লেখ করেছেন, apkসম্প্রদায় দ্বারা সরবরাহ করা যথাযথ বাইনারি রয়েছে এমন প্যাকেজ রয়েছে যা ব্যবহার করে আপনি বাইনারিগুলি তৈরির (কখনও কখনও দীর্ঘ) প্রক্রিয়াটি বাঁচাতে পারবেন।


5

সত্যিকারের সততার পরামর্শ এখানে, দেবিয়ান ভিত্তিক চিত্রটিতে স্যুইচ করুন এবং তারপরে আপনার সমস্ত সমস্যাগুলি দূর হয়ে যাবে।

পাইথন অ্যাপ্লিকেশনগুলির জন্য অ্যালপাইন ভাল কাজ করে না।

এখানে আমার উদাহরণ dockerfile:

FROM python:3.7.6-buster

RUN pip install pandas==1.0.0
RUN pip install sklearn
RUN pip install Django==3.0.2
RUN pip install cx_Oracle==7.3.0
RUN pip install excel
RUN pip install djangorestframework==3.11.0

python:3.7.6-busterএই ক্ষেত্রে অধিক উপযুক্ত, উপরন্তু, আপনি OS এ কোন অতিরিক্ত নির্ভরতা প্রয়োজন হবে না।

একটি দরকারী এবং সাম্প্রতিক নিবন্ধটি অনুসরণ করুন: https://pythonspeed.com/articles/alpine-docker-python/ :

পাইথন চিত্রগুলির জন্য আলপাইন লিনাক্স ব্যবহার করবেন না আপনি যদি না ধীরে ধীরে বিল্ড সময়, বৃহত্তর চিত্র, আরও কাজ এবং অস্পষ্ট বাগের সম্ভাবনা না চান তবে আপনি বেস চিত্র হিসাবে আলপাইন লিনাক্স এড়াতে চাইবেন। আপনার কী ব্যবহার করা উচিত সে সম্পর্কে কিছু সুপারিশের জন্য, একটি ভাল বেস চিত্র চয়ন করার জন্য আমার নিবন্ধটি দেখুন।


4
আপনি আপনার চিত্রের স্তরগুলির সংখ্যা হ্রাস করতে পারবেন যেমন RUN পিপ ইনস্টল <প্যাকেজএএএলটি & পিপ ইনস্টল <প্যাকেজবি> এবং আরও কিছু না করে আরএন কমান্ডের ব্লক ব্যবহার করার পরিবর্তে। এটি আপনার বিল্ড পারফরম্যান্সকে প্রভাবিত করে :)
p0l00ck

আপনি pip --no-cacheআরও কিছুটা পদচিহ্ন শেভ করতে ব্যবহার করতে পারেন । আপনার সত্যিকারের যা করা উচিত তা হ'ল এগুলি একটি requirements.txtফাইলের মধ্যে লাইনে pip install --no-cache -r requirements.txt
রেখে দিন

1

এটি আমার পক্ষে কাজ করেছে:

FROM python:3.8-alpine
RUN echo "@testing http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
RUN apk add --update --no-cache py3-numpy py3-pandas@testing
ENV PYTHONPATH=/usr/lib/python3.8/site-packages

COPY . /app
WORKDIR /app

RUN pip install -r requirements.txt

EXPOSE 5003 
ENTRYPOINT [ "python" ] 
CMD [ "app.py" ]

কোড এখানে অধিকাংশই উত্তর থেকে jtlz2 এই একই থ্রেড থেকে Faylixe অন্য থ্রেড থেকে।

পান্ডাসের হালকা সংস্করণটি আল্পাইন সংগ্রহস্থলটিতে পাওয়া যায় py3-numpyতবে এটি পাইথন ডিফল্টরূপে আমদানিগুলি পড়ায় সেখান থেকে একই ফাইলের পাতায় ইনস্টল হয় না। অতএব আপনি যোগ করতে হবে ENV। এছাড়াও আলপাইন সংস্করণ সম্পর্কে সচেতন হতে হবে।


0

pandasএকটি সম্প্রদায় সমর্থিত প্যাকেজ হিসাবে বিবেচিত হয়, সুতরাং edge/testingআল্পাইন আনুষ্ঠানিকভাবে কোনও মূল প্যাকেজ হিসাবে পান্ডাকে সমর্থন করে না বলে নির্দেশিত উত্তরগুলি কাজ করছে না (এটি এখনও কাজ করে, এটি কেবল কোর আলপাইন বিকাশকারীদের দ্বারা সমর্থিত নয়)।

এই ডকফায়াইল চেষ্টা করুন:

FROM python:3.8-alpine
RUN echo "@community http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories \
&& apk add py3-pandas@community

এটি ব্যবহার করে ভ্যানিলা আল্পাইন চিত্রের জন্যও কাজ করে FROM alpine:3.12


-1

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

https://github.com/dguyhasnoname/k8s-cluster-checker/blob/master/Dockerfile

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.