Alpine เบฅเบงเบšเบฅเบงเบก Docker เบชเป‰เบฒเบ‡เบชเปเบฒเบฅเบฑเบš Python เบŠเป‰เบฒเบฅเบปเบ‡ 50 เป€เบ—เบปเปˆเบฒ, เปเบฅเบฐเบฎเบนเบšเบžเบฒเบšเปเบกเปˆเบ™เบซเบ™เบฑเบเบเบงเปˆเบฒ 2 เป€เบ—เบปเปˆเบฒ.

Alpine เบฅเบงเบšเบฅเบงเบก Docker เบชเป‰เบฒเบ‡เบชเปเบฒเบฅเบฑเบš Python เบŠเป‰เบฒเบฅเบปเบ‡ 50 เป€เบ—เบปเปˆเบฒ, เปเบฅเบฐเบฎเบนเบšเบžเบฒเบšเปเบกเปˆเบ™เบซเบ™เบฑเบเบเบงเปˆเบฒ 2 เป€เบ—เบปเปˆเบฒ.

Alpine Linux เบกเบฑเบเบˆเบฐเบ–เบทเบเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เป€เบ›เบฑเบ™เบฎเบนเบšเบžเบฒเบšเบžเบทเป‰เบ™เบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบš Docker. เป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ–เบทเบเบšเบญเบเบงเปˆเบฒเบเบฒเบ™เปƒเบŠเป‰ Alpine เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบ™เป‰เบญเบเบฅเบปเบ‡เปเบฅเบฐเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเป„เบงเบ‚เบถเป‰เบ™.

เปเบ•เปˆเบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰ Alpine Linux เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ Python, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™:

  • เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบŠเป‰เบฒเบฅเบปเบ‡เบซเบผเบฒเบ
  • เป€เบฎเบฑเบ”เปƒเบซเป‰เบฎเบนเบšเบžเบฒเบšเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบซเบเปˆเบ‚เบถเป‰เบ™
  • เป€เบชเบเป€เบงเบฅเบฒเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ
  • เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™ runtime


เบ‚เปเปƒเบซเป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡ Alpine เบˆเบถเปˆเบ‡เบ–เบทเบเปเบ™เบฐเบ™เปเบฒ, เปเบ•เปˆเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ—เปˆเบฒเบ™เบˆเบถเปˆเบ‡เบšเปเปˆเบ„เบงเบ™เปƒเบŠเป‰เบกเบฑเบ™เบเบฑเบš Python.

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ„เบปเบ™เบˆเบถเปˆเบ‡เปเบ™เบฐเบ™เบณ Alpine?

เปƒเบซเป‰เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ gcc เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบš Alpine Linux vs Ubuntu 18.04 เปƒเบ™เปเบ‡เปˆเบ‚เบญเบ‡เบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เบฎเบนเบšเบžเบฒเบšเบชเบธเบ”เบ—เป‰เบฒเบ.

เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เปƒเบซเป‰เบ”เบฒเบงเป‚เบซเบฅเบ”เบชเบญเบ‡เบฎเบนเบšเปเบฅเบฐเบ›เบฝเบšเบ—เบฝเบšเบ‚เบฐ เปœเบฒเบ” เบ‚เบญเบ‡เบžเบงเบเบกเบฑเบ™:

$ docker pull --quiet ubuntu:18.04
docker.io/library/ubuntu:18.04
$ docker pull --quiet alpine
docker.io/library/alpine:latest
$ docker image ls ubuntu:18.04
REPOSITORY          TAG        IMAGE ID         SIZE
ubuntu              18.04      ccc6e87d482b     64.2MB
$ docker image ls alpine
REPOSITORY          TAG        IMAGE ID         SIZE
alpine              latest     e7d92cdc71fe     5.59MB

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰, เบฎเบนเบšเบžเบฒเบšเบžเบทเป‰เบ™เบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบš Alpine เปเบกเปˆเบ™เบ™เป‰เบญเบเบเบงเปˆเบฒเบซเบผเบฒเบ. เบ•เบญเบ™เบ™เบตเป‰เบฅเบญเบ‡เบ•เบดเบ”เบ•เบฑเป‰เบ‡ gcc เปเบฅเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ Ubuntu:

FROM ubuntu:18.04
RUN apt-get update && 
    apt-get install --no-install-recommends -y gcc && 
    apt-get clean && rm -rf /var/lib/apt/lists/*

เบเบฒเบ™เบ‚เบฝเบ™ Dockerfile เบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เปเบšเบšเปเบกเปˆเบ™เป€เบเบตเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰.

เปƒเบซเป‰เบงเบฑเบ”เปเบ—เบเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบ›เบฐเบเบญเบš:

$ time docker build -t ubuntu-gcc -f Dockerfile.ubuntu --quiet .
sha256:b6a3ee33acb83148cd273b0098f4c7eed01a82f47eeb8f5bec775c26d4fe4aae

real    0m29.251s
user    0m0.032s
sys     0m0.026s
$ docker image ls ubuntu-gcc
REPOSITORY   TAG      IMAGE ID      CREATED         SIZE
ubuntu-gcc   latest   b6a3ee33acb8  9 seconds ago   150MB

เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบŠเป‰เปเบฒเบญเบตเบเบ„เบฑเป‰เบ‡เบชเปเบฒเบฅเบฑเบš Alpine (Dockerfile):

FROM alpine
RUN apk add --update gcc

เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบเบญเบš, เป€เบšเบดเปˆเบ‡เป€เบงเบฅเบฒเปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบเบฒเบ™เบŠเบธเบกเบ™เบธเบก:

$ time docker build -t alpine-gcc -f Dockerfile.alpine --quiet .
sha256:efd626923c1478ccde67db28911ef90799710e5b8125cf4ebb2b2ca200ae1ac3

real    0m15.461s
user    0m0.026s
sys     0m0.024s
$ docker image ls alpine-gcc
REPOSITORY   TAG      IMAGE ID       CREATED         SIZE
alpine-gcc   latest   efd626923c14   7 seconds ago   105MB

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบชเบฑเบ™เบเบฒเป„เบงเป‰, เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆ Alpine เปเบกเปˆเบ™เป€เบเบฑเบšเบเปเบฒเป„เบ”เป‰เป„เบงเบ‚เบถเป‰เบ™เปเบฅเบฐเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบเบงเปˆเบฒ: 15 เบงเบดเบ™เบฒเบ—เบตเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™ 30 เปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เบฎเบนเบšเบžเบฒเบšเปเบกเปˆเบ™ 105MB เบ—เบฝเบšเบเบฑเบš 150MB. เบกเบฑเบ™เบ”เบตเบซเบผเบฒเบ!

เปเบ•เปˆเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ›เปˆเบฝเบ™เป„เบ›เบชเป‰เบฒเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Python, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบˆเบฐเบšเปเปˆเป€เบ›เบฑเบ™ rosy.

เบฎเบนเบšเบžเบฒเบš Python

เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Python เบกเบฑเบเบˆเบฐเปƒเบŠเป‰ pandas เปเบฅเบฐ matplotlib. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเป€เบญเบปเบฒเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆ Debian เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เป‚เบ”เบเปƒเบŠเป‰ Dockerfile เบ™เบตเป‰:

FROM python:3.8-slim
RUN pip install --no-cache-dir matplotlib pandas

เปƒเบซเป‰โ€‹เป€เบเบฑเบšโ€‹เบเปเบฒโ€‹เบกเบฑเบ™โ€‹:

$ docker build -f Dockerfile.slim -t python-matpan.
Sending build context to Docker daemon  3.072kB
Step 1/2 : FROM python:3.8-slim
 ---> 036ea1506a85
Step 2/2 : RUN pip install --no-cache-dir matplotlib pandas
 ---> Running in 13739b2a0917
Collecting matplotlib
  Downloading matplotlib-3.1.2-cp38-cp38-manylinux1_x86_64.whl (13.1 MB)
Collecting pandas
  Downloading pandas-0.25.3-cp38-cp38-manylinux1_x86_64.whl (10.4 MB)
...
Successfully built b98b5dc06690
Successfully tagged python-matpan:latest

real    0m30.297s
user    0m0.043s
sys     0m0.020s

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบกเบตเบ‚เบฐเบซเบ™เบฒเบ” 363MB.
เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฎเบฑเบ”เบ”เบตเบเบงเปˆเบฒเบเบฑเบš Alpine เบšเป? เบกเบฒเบฅเบญเบ‡เป€เบšเบดเปˆเบ‡:

FROM python:3.8-alpine
RUN pip install --no-cache-dir matplotlib pandas

$ docker build -t python-matpan-alpine -f Dockerfile.alpine .                                 
Sending build context to Docker daemon  3.072kB                                               
Step 1/2 : FROM python:3.8-alpine                                                             
 ---> a0ee0c90a0db                                                                            
Step 2/2 : RUN pip install --no-cache-dir matplotlib pandas                                                  
 ---> Running in 6740adad3729                                                                 
Collecting matplotlib                                                                         
  Downloading matplotlib-3.1.2.tar.gz (40.9 MB)                                               
    ERROR: Command errored out with exit status 1:                                            
     command: /usr/local/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/
tmp/pip-install-a3olrixa/matplotlib/setup.py'"'"'; __file__='"'"'/tmp/pip-install-a3olrixa/matplotlib/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-install-a3olrixa/matplotlib/pip-egg-info                              

...
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
The command '/bin/sh -c pip install matplotlib pandas' returned a non-zero code: 1

เบกเบตเบซเบเบฑเบ‡เป€เบเบตเบ”เบ‚เบทเป‰เบ™

Alpine เบšเปเปˆเบฎเบญเบ‡เบฎเบฑเบšเบฅเปเป‰

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡, เป€เบŠเบดเปˆเบ‡เบญเบตเบ‡เปƒเบชเปˆ Debian, เบ—เปˆเบฒเบ™เบˆเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเบกเบฑเบ™เบ”เบฒเบงเป‚เบซเบฅเบ” matplotlib-3.1.2-cp38-cp38-manylinux1_x86_64.whl.

เบ™เบตเป‰เปเบกเปˆเบ™เบ–เบฒเบ™เบชเบญเบ‡เบชเปเบฒเบฅเบฑเบšเบฅเปเป‰. Alpine เบ”เบฒเบงเป‚เบซเบผเบ”เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™ `matplotlib-3.1.2.tar.gz` เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ เบ‚เบฑเบšเบฅเบปเบ”.

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡? เบเบฒเบ™เปเบˆเบเบขเบฒเบ Linux เบชเปˆเบงเบ™เปƒเบซเบเปˆเปƒเบŠเป‰ GNU เบฎเบธเปˆเบ™ (glibc) เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C, เป€เบŠเบดเปˆเบ‡เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ”เบเบ—เบธเบเป†เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™ C, เบฅเบงเบกเบ—เบฑเบ‡ Python. เปเบ•เปˆ Alpine เปƒเบŠเป‰ 'musl', เปเบฅเบฐเบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ binaries เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบ–เบทเบเบญเบญเบเปเบšเบšเบกเบฒเบชเปเบฒเบฅเบฑเบš 'glibc', เบžเบงเบเบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰ Alpine, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฅเบงเบšเบฅเบงเบกเบฅเบฐเบซเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบ‚เบฝเบ™เบขเบนเปˆเปƒเบ™ C เปƒเบ™เปเบ•เปˆเบฅเบฐเบŠเบธเบ” Python.

เป‚เบญเป‰, เปเบกเปˆเบ™เปเบฅเป‰เบง, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบŠเบญเบเบซเบฒเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡.
เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš:

FROM python:3.8-alpine
RUN apk --update add gcc build-base freetype-dev libpng-dev openblas-dev
RUN pip install --no-cache-dir matplotlib pandas

เปเบฅเบฐโ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบเบฒเบ™โ€‹เบเปเปˆโ€‹เบชเป‰เบฒเบ‡โ€‹เปเบกเปˆเบ™โ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒ ...

... 25 เบ™เบฒเบ—เบต 57 เบงเบดเบ™เบฒเบ—เบต! เปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เบฎเบนเบšเบžเบฒเบšเปเบกเปˆเบ™ 851MB.

เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆ Alpine เปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™เบเบงเปˆเบฒเปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡, เบžเบงเบเบกเบฑเบ™เบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบเบงเปˆเบฒ, เปเบฅเบฐเบ—เปˆเบฒเบ™เบเบฑเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบŠเบญเบเบซเบฒเบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ—เบฑเบ‡เบซเบกเบปเบ”. เบ—เปˆเบฒเบ™เปเบ™เปˆเบ™เบญเบ™เบชเบฒเบกเบฒเบ”เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบชเบฐเบžเบฒเปเบซเปˆเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบซเบผเบฒเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™ โ€‹เปเบ•เปˆโ€‹เบ™เบฑเป‰เบ™โ€‹เปเบฒเบโ€‹เบ„เบงเบฒเบกโ€‹เบงเปˆเบฒโ€‹เบ•เป‰เบญเบ‡โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เบซเบผเบฒเบโ€‹เบเบงเปˆเบฒโ€‹เป€เบเบปเปˆเบฒ.

เบ™เบฑเป‰เบ™เบšเปเปˆเปเบกเปˆเบ™เบ—เบฑเบ‡เบปเบ”!

Alpine เบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบšเปเปˆเบ„เบฒเบ”เบ„เบดเบ”เปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™

  • เปƒเบ™เบ—เบฒเบ‡เบ—เบดเบ”เบชเบฐเบ”เบต, musl เปเบกเปˆเบ™เป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบš glibc, เปเบ•เปˆเปƒเบ™เบ—เบฒเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”, เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบšเบฑเบ™เบซเบฒเบซเบผเบฒเบเบขเปˆเบฒเบ‡. เปเบฅเบฐเบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเป€เบ›เบฑเบ™, เบžเบงเบเป€เบ‚เบปเบฒเบญเบฒเบ”เบˆเบฐเบšเปเปˆเบžเปเปƒเบˆ. เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฒเบ‡เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™:
  • Alpine เบกเบตเบ‚เบฐเบซเบ™เบฒเบ” stack thread เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบเบงเปˆเบฒเป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ™เปเบฒเป„เบ›เบชเบนเปˆ เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ™ Python
  • เบœเบนเป‰เปƒเบŠเป‰เบšเบฒเบ‡เบ„เบปเบ™เป„เบ”เป‰เบžเบปเบšเป€เบซเบฑเบ™เบงเปˆเบฒ เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Python เปเบกเปˆเบ™เบŠเป‰เบฒเบฅเบปเบ‡ เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบงเบดเบ—เบตเบเบฒเบ™ musl เบˆเบฑเบ”เบชเบฑเบ™เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒ (เปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบ glibc).
  • เบซเบ™เบถเปˆเบ‡เปƒเบ™เบœเบนเป‰เบŠเบปเบกเปƒเบŠเป‰ เบžเบปเบšเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เป€เบงเบฅเบฒเบˆเบฑเบ”เบฎเบนเบšเปเบšเบšเบงเบฑเบ™เบ—เบต

เปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเปเบเป‰เป„เบ‚เปเบฅเป‰เบง, เปเบ•เปˆเปƒเบœเบˆเบฐเบฎเบนเป‰เบงเปˆเบฒเบกเบตเบญเบตเบเบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”.

เบขเปˆเบฒเปƒเบŠเป‰เบฎเบนเบšเบžเบฒเบš Alpine เบชเปเบฒเบฅเบฑเบš Python

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบฅเบปเบšเบเบงเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปเบฅเบฐเบเบฒเบง, เบเบฒเบ™เบŠเบญเบเบซเบฒเบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเปเบฅเบฐเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™, เบขเปˆเบฒเปƒเบŠเป‰ Alpine Linux เป€เบ›เบฑเบ™เบฎเบนเบšเบžเบฒเบšเบžเบทเป‰เบ™เบ–เบฒเบ™. เบเบฒเบ™เป€เบฅเบทเบญเบเบฎเบนเบšเบžเบฒเบšเบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบ”เบต.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™