เหตุใดการติดตั้ง Pandas บน Alpine Linux จึงใช้เวลานาน


107

ฉันสังเกตเห็นว่าการติดตั้ง Pandas และ Numpy (เป็นการพึ่งพา) ในคอนเทนเนอร์ Docker โดยใช้ OS Alpine กับ CentOS หรือ Debian ใช้เวลานานกว่ามาก ฉันสร้างการทดสอบเล็กน้อยด้านล่างเพื่อแสดงให้เห็นถึงความแตกต่างของเวลา นอกเหนือจากเวลาไม่กี่วินาทีที่ Alpine ใช้ในการอัปเดตและดาวน์โหลด build dependencies เพื่อติดตั้ง Pandas และ Numpy เหตุใด setup.py จึงใช้เวลามากกว่าการติดตั้ง Debian ประมาณ 70 เท่า

มีวิธีใดในการเร่งความเร็วการติดตั้งโดยใช้ Alpine เป็นภาพฐานหรือมีภาพฐานอื่นที่มีขนาดเทียบเท่ากับ Alpine ที่ดีกว่าสำหรับใช้กับแพ็คเกจเช่น Pandas และ Numpy

Dockerfile.debian

FROM python:3.6.4-slim-jessie

RUN pip install pandas

สร้างภาพ Debian ด้วย Pandas & Numpy:

[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

Dockerfile.alpine

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

2
.apk พร้อมใช้งานแล้วดังนั้นจึงไม่จำเป็นต้องสร้างจากแหล่ง - pkgs.alpinelinux.org/packages?name= * pandas & branch = edge
jtlz2

2
@ jtlz2 แพนด้าไม่สามารถใช้ได้ที่ขอบสาขาของ Alpine ซึ่งน่าเสียดาย ...
fccoelho

@fccoelho มีให้อีกแล้ว!
jtlz2

คำตอบ:


67

ภาพที่ใช้ Debian ใช้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)

รูปแบบ WHL ได้รับการพัฒนาให้เป็นวิธีการติดตั้งซอฟต์แวร์ Python ที่รวดเร็วและเชื่อถือได้มากกว่าการสร้างใหม่จากซอร์สโค้ดทุกครั้ง ไฟล์ WHL จะต้องถูกย้ายไปยังตำแหน่งที่ถูกต้องบนระบบเป้าหมายที่จะติดตั้งเท่านั้นในขณะที่การแจกจ่ายซอร์สต้องใช้ขั้นตอนการสร้างก่อนการติดตั้ง

แพ็คเกจล้อpandasและnumpyไม่รองรับในรูปภาพที่ใช้แพลตฟอร์ม Alpine นั่นเป็นเหตุผลที่เมื่อเราติดตั้งโดยใช้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ใน CI วิธีที่ดีที่สุดคือรวบรวมครั้งเดียวส่งไปยังรีจิสทรีใด ๆ และใช้เป็นภาพพื้นฐานตามความต้องการของคุณ

แก้ไข: หากคุณต้องการใช้ภาพอัลไพน์กับpandasคุณสามารถดึงภาพนักเทียบท่าnickgryg / alpine-pandasของฉันได้ เป็นภาพงูเหลือมที่มีการรวบรวมไว้ล่วงหน้าpandasบนแพลตฟอร์ม Alpine ควรประหยัดเวลาของคุณ


3
ก็แย่เหมือนกัน อย่างไรก็ตามดูเหมือนว่า six, pytz และ python-dateutil กำลังดาวน์โหลดแพ็คเกจ. hl บน Alpine นั่นหมายความว่าเป็นไปได้ที่จะสร้างล้อสำหรับแพนด้าและทำให้มึนงงสำหรับ Alpine แต่ตอนนี้ยังไม่เกิดขึ้นใช่หรือไม่?
moku

ไม่เป็นไปไม่ได้ที่จะสร้างล้อสำหรับpandasและnampyบนแพลตฟอร์มอัลไพน์ ล้อเหล่านั้นไม่รองรับ ฉันแสดงให้เห็นว่าในคำตอบเมื่อพยายามติดตั้งpandasจากแพ็คเกจล้อในภาพอัลไพน์
nickgryg

@Nickolay มีวิธีการแก้ปัญหาที่จะรีไซเคิลpandasสร้างที่ได้รับการสร้างขึ้นบนalpineแล้วเก็บไว้ชั่วคราว? (สิ่งนี้อาจจัดขึ้นที่ไหนสักแห่งในพื้นที่)
jtlz2

2
สาเหตุที่เป็นเช่นนี้เนื่องจากล้อเหล่านี้มีไบนารีที่สร้างจาก c / c ++ และเชื่อมโยงกับ glibc แต่อัลไพน์ไม่มี glibc จึงใช้ musl แทนซึ่งหมายความว่าไบนารีใหม่จะต้องรวบรวมและเชื่อมโยงกับ musl
ThisGuyCantEven

36

คำตอบ: ณ วันที่ 9/3/2020 สำหรับ PYTHON 3 มันยังไม่!

นี่คือ Dockerfile ที่ใช้งานได้อย่างสมบูรณ์:

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

การสร้างมีความไวต่อหมายเลขเวอร์ชันหลามและอัลไพน์ที่แน่นอน - การทำผิดเหล่านี้ดูเหมือนจะกระตุ้นข้อผิดพลาดของ Max Levy so:libpython3.7m.so.1.0 (missing)- แต่ตอนนี้ใช้งานได้สำหรับฉันแล้ว

Dockerfile ที่อัปเดตของฉันมีอยู่ที่https://gist.github.com/jtlz2/b0f4bc07ce2ff04bc193337f2327c13b


[อัปเดตก่อนหน้านี้:]

คำตอบ: มันไม่ใช่!

ใน Alpine Dockerfile ใด ๆ ที่คุณสามารถทำได้ *

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

เพราะนี่คือnumpy, scipyและตอนนี้pandasทุกคนที่สร้างไว้ล่วงหน้าที่มีอยู่บนalpine :

https://pkgs.alpinelinux.org/packages?name=*numpy

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

https://pkgs.alpinelinux.org/packages?name=*pandas&branch=edge

วิธีหนึ่งในการหลีกเลี่ยงการสร้างใหม่ทุกครั้งหรือใช้ Docker Layer คือการใช้ Alpine Linux /.apk packageเช่น

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

https://github.com/nbgallery/apks

คุณสามารถสร้างสิ่งเหล่านี้ได้ .apkได้ครั้งเดียวและใช้งานได้ทุกที่ใน Dockerfile ที่คุณต้องการ :)

นอกจากนี้ยังช่วยให้คุณไม่ต้องอบทุกสิ่งทุกอย่างลงในอิมเมจ Docker ก่อนความเป็นจริงนั่นคือความยืดหยุ่นในการสร้างอิมเมจ Docker ล่วงหน้าที่คุณต้องการ

ป.ล. ฉันได้ใส่ Dockerfile กุดไว้ที่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

2
ดูเหมือนเพิ่งถูกลบออกไป? pkgs.alpinelinux.org/package/edge/testing/x86/py-pandas
jtlz2

1
@ChrisWedgwood พวกเขากำลังทำงานอย่างแข็งขัน - ดูgithub.com/alpinelinux/aports/pull/6330
jtlz2

1
@ChrisWedgwood ทำงานอีกแล้ววว!
jtlz2


1
@ jtlz2 ผมเปลี่ยนไป 3.7 บางมือปราบและทุกอย่างเป็นไปอย่างราบรื่นมี pythonspeed.com/articles/base-image-python-docker-images
จักร

9

ความสนใจ
ดูคำตอบ @ jtlz2 พร้อมอัปเดตล่าสุด

เก่า

ดังนั้นแพ็คเกจ py3-pandas & py3-numpy จึงถูกย้ายไปยังที่เก็บอัลไพน์ทดสอบดังนั้นคุณสามารถดาวน์โหลดได้โดยเพิ่มบรรทัดเหล่านี้ใน Dockerfile ของคุณ:

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

หวังว่าจะช่วยใครสักคน!

ลิงก์แพ็คเกจ Alpine:
- py3-pandas
- py3-numpy

อัลไพน์ที่เก็บข้อมูลบริเวณท่าเรือ


สิ่งนี้ได้ผลสำหรับฉัน! ขอขอบคุณที่ให้คำตอบล่าสุด!
Stratus3D

2
แก้ไขในคำตอบของฉัน
jtlz2

1
@ jtlz2 เจ๋งขอบคุณ แต่ฉันย้ายไปที่เดเบียนบัสเตอร์แทนอัลไพน์และไม่ได้ลองติดตั้งอีกครั้งด้วยอัลไพน์ แต่อย่างไรก็ตามขอบคุณสำหรับการตอบกลับแก้ไขคำตอบของฉันด้วย
stefanitsky

1
โปรดทราบว่า py3-pandas ไม่สามารถใช้ได้กับ 3.11.x มันอยู่ในรุ่น 'edge' เท่านั้น ณ เวลาที่ฉันเขียนความคิดเห็นนี้ แก้ไข: เห็นได้ชัดว่าในโพสต์ด้านบนฉันพลาดการอ้างอิงนั้นก่อนหน้านี้ขออภัย
เน่า

6

เพียงแค่นำคำตอบเหล่านี้มารวมกันเป็นคำตอบเดียวและเพิ่มรายละเอียดฉันคิดว่าพลาด เหตุผลที่ไลบรารี python บางตัวโดยเฉพาะอย่างยิ่งคณิตศาสตร์และไลบรารีข้อมูลที่ได้รับการปรับให้เหมาะสมใช้เวลานานมากในการสร้างบนอัลไพน์เป็นเพราะล้อ pip สำหรับไลบรารีเหล่านี้รวมไบนารีที่คอมไพล์ไว้ล่วงหน้าจาก c / c ++ และเชื่อมโยงกับglibcชุดของไลบรารีมาตรฐาน c ทั่วไป Debian, Fedora, CentOS ทั้งหมด (โดยทั่วไป) ใช้glibcแต่อัลไพน์เพื่อให้มีน้ำหนักเบาจึงใช้musl-libcแทน C / C ++ ไบนารีสร้างบนglibcระบบจะไม่ทำงานในระบบได้โดยไม่ต้องและเดียวกันจะไปสำหรับglibcmusl

Pip จะมองหาวงล้อที่มีไบนารีที่ถูกต้องเป็นอันดับแรกหากไม่พบมันจะพยายามรวบรวมไบนารีจากแหล่ง c / c ++ และเชื่อมโยงกับ musl ในหลาย ๆ กรณีสิ่งนี้จะไม่ได้ผลเว้นแต่คุณจะมีส่วนหัว python จากpython3-devหรือสร้างเครื่องมือเช่นmake .

ตอนนี้ซับเงินอย่างที่คนอื่น ๆ พูดถึงมีapkแพ็คเกจที่มีไบนารีที่เหมาะสมที่ชุมชนจัดเตรียมไว้การใช้สิ่งเหล่านี้จะช่วยให้คุณประหยัดกระบวนการสร้างไบนารี (บางครั้งก็ยาว)


6

คำแนะนำที่ตรงไปตรงมาอย่างแท้จริงที่นี่เปลี่ยนไปใช้ภาพจาก Debian แล้วปัญหาทั้งหมดของคุณจะหมดไป

Alpine สำหรับแอปพลิเคชัน python ทำงานได้ไม่ดี

นี่คือตัวอย่างของฉัน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มีความเหมาะสมมากขึ้นในกรณีนี้ในนอกจากนี้คุณไม่จำเป็นต้องพึ่งพาพิเศษใด ๆ ในระบบปฏิบัติการ

ติดตามบทความที่เป็นประโยชน์และล่าสุด: https://pythonspeed.com/articles/alpine-docker-python/ :

อย่าใช้ Alpine Linux สำหรับอิมเมจ Python เว้นแต่ว่าคุณต้องการเวลาในการสร้างที่ช้าลงอย่างมากรูปภาพขนาดใหญ่ทำงานได้มากขึ้นและอาจเกิดข้อบกพร่องที่ไม่ชัดเจนคุณจะต้องหลีกเลี่ยง Alpine Linux เป็นอิมเมจพื้นฐาน สำหรับคำแนะนำบางประการเกี่ยวกับสิ่งที่คุณควรใช้โปรดดูบทความของฉันเกี่ยวกับการเลือกรูปภาพพื้นฐานที่ดี


2
คุณสามารถลดจำนวนเลเยอร์ในอิมเมจได้เช่น RUN pip install <packegeA> && pip install <packageB> และอื่น ๆ แทนที่จะใช้บล็อกคำสั่ง RUN ส่งผลต่อประสิทธิภาพการสร้างของคุณ :)
p0l00ck

1
คุณยังสามารถใช้pip --no-cacheเพื่อกำจัดรอยเท้าอีกเล็กน้อย สิ่งที่คุณควรทำจริงๆก็แค่วางไว้ทีละบรรทัดในrequirements.txtไฟล์และpip install --no-cache -r requirements.txt
ThisGuyCantEven

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จากเธรดอื่น

ปรากฎว่าพบแพนด้ารุ่นที่เบากว่าในที่เก็บ Alpine py3-numpyแต่ไม่ได้รับการติดตั้งในเส้นทางไฟล์เดียวกันจากที่ Python อ่านการนำเข้าตามค่าเริ่มต้น ดังนั้นคุณต้องเพิ่มไฟล์ENV. โปรดระวังเกี่ยวกับเวอร์ชันอัลไพน์ด้วย


0

pandas ถือเป็นแพ็กเกจที่ชุมชนรองรับดังนั้นคำตอบจึงชี้ไปที่ edge/testingจะไม่ได้ผลเนื่องจาก Alpine ไม่รองรับแพนด้าเป็นแพ็คเกจหลักอย่างเป็นทางการ (ยังใช้งานได้ แต่ไม่ได้รับการสนับสนุนจากผู้พัฒนาหลักของ Alpine)

ลองใช้ Dockerfile นี้:

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

อัลไพน์ใช้เวลาในการติดตั้งแพนด้านานมากและขนาดของภาพก็ใหญ่เช่นกัน ฉันลอง python: อิมเมจฐาน python รุ่น 3.8-slim-buster การสร้างภาพทำได้เร็วมากและขนาดของภาพน้อยกว่าครึ่งหนึ่งเมื่อเทียบกับภาพนักเทียบท่างูเหลือมอัลไพน์

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.