Alpine แƒแƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒก Docker-แƒ˜แƒก แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒก Python-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก 50-แƒฏแƒ”แƒ  แƒฃแƒคแƒ แƒ แƒœแƒ”แƒšแƒ, แƒฎแƒแƒšแƒ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜ 2-แƒฏแƒ”แƒ  แƒ›แƒซแƒ˜แƒ›แƒ”แƒ.

Alpine แƒแƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒก Docker-แƒ˜แƒก แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒก Python-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก 50-แƒฏแƒ”แƒ  แƒฃแƒคแƒ แƒ แƒœแƒ”แƒšแƒ, แƒฎแƒแƒšแƒ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜ 2-แƒฏแƒ”แƒ  แƒ›แƒซแƒ˜แƒ›แƒ”แƒ.

Alpine Linux แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ แƒ”แƒ™แƒแƒ›แƒ”แƒœแƒ“แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒแƒ‘แƒแƒ–แƒ˜แƒกแƒ แƒกแƒฃแƒ แƒแƒ—แƒ˜ Docker-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ’แƒ”แƒฃแƒ‘แƒœแƒ”แƒ‘แƒ˜แƒแƒœ, แƒ แƒแƒ› Alpine-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒก แƒฃแƒคแƒ แƒ แƒžแƒแƒขแƒแƒ แƒแƒก แƒ’แƒแƒฎแƒ“แƒ˜แƒก แƒ“แƒ แƒ›แƒจแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒก แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒแƒ“.

แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒฃ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— Alpine Linux-แƒก แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ›แƒแƒจแƒ˜แƒœ แƒ˜แƒก:

  • แƒจแƒ”แƒœแƒก แƒจแƒ”แƒœแƒแƒ‘แƒ”แƒ‘แƒก แƒ‘แƒ”แƒ•แƒ แƒแƒ“ แƒแƒœแƒ”แƒšแƒ”แƒ‘แƒก
  • แƒฎแƒ“แƒ˜แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒก แƒฃแƒคแƒ แƒ แƒ“แƒ˜แƒ“แƒก
  • แƒ™แƒแƒ แƒ’แƒแƒ• แƒ“แƒ แƒแƒก
  • แƒ“แƒ แƒ‘แƒแƒšแƒแƒก, แƒแƒ›แƒแƒœ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ•แƒ˜แƒแƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก


แƒ›แƒแƒ“แƒ˜ แƒ•แƒœแƒแƒฎแƒแƒ—, แƒ แƒแƒขแƒแƒ› แƒแƒ แƒ˜แƒก แƒ แƒ”แƒ™แƒแƒ›แƒ”แƒœแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ Alpine, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ แƒแƒขแƒแƒ› แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ˜แƒ’แƒ˜ Python-แƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“.

แƒ แƒแƒขแƒแƒ› แƒฃแƒ แƒฉแƒ”แƒ•แƒ”แƒœ แƒฎแƒแƒšแƒฎแƒ˜ แƒแƒšแƒžแƒฃแƒ แƒก?

แƒ“แƒแƒ•แƒฃแƒจแƒ•แƒแƒ—, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ gcc, แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ˜แƒ›แƒ˜แƒฏแƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜ แƒ“แƒ แƒ’แƒ•แƒ˜แƒœแƒ“แƒ แƒจแƒ”แƒ•แƒแƒ“แƒแƒ แƒแƒ— Alpine Linux แƒ“แƒ 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

แƒ แƒแƒ’แƒแƒ แƒช แƒ“แƒแƒ’แƒžแƒ˜แƒ แƒ“แƒ˜แƒ—, แƒแƒšแƒžแƒฃแƒ แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜ แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ’แƒ แƒแƒ•แƒ“แƒ”แƒ‘แƒ แƒ“แƒ แƒฃแƒคแƒ แƒ แƒ›แƒชแƒ˜แƒ แƒ”แƒ: 15 แƒฌแƒแƒ›แƒ˜ 30-แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“ แƒ“แƒ แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ–แƒแƒ›แƒแƒ 105 แƒ›แƒ‘ 150 แƒ›แƒ‘-แƒ˜แƒก แƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’. แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ™แƒแƒ แƒ’แƒ˜แƒ!

แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒฃ แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ–แƒ” แƒ’แƒแƒ“แƒแƒ•แƒแƒšแƒ—, แƒ›แƒแƒจแƒ˜แƒœ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒแƒ แƒช แƒ˜แƒกแƒ” แƒ•แƒแƒ แƒ“แƒ˜แƒกแƒคแƒ”แƒ แƒ˜แƒ.

แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜

แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ”แƒœ แƒžแƒแƒœแƒ“แƒแƒก แƒ“แƒ 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

แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒกแƒฃแƒ แƒแƒ—แƒก 363 แƒ›แƒ‘ แƒ–แƒแƒ›แƒ˜แƒก.
แƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒแƒ“ แƒ•แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ˜แƒ— 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.แƒ›แƒ—แƒ”แƒšแƒ˜.

แƒ”แƒก แƒแƒ แƒ˜แƒก แƒแƒ แƒแƒ‘แƒ˜แƒ—แƒ˜ แƒ‘แƒแƒ แƒ‘แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. Alpine แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ•แƒก แƒฌแƒงแƒแƒ แƒแƒ”แƒ‘แƒก `matplotlib-3.1.2.tar.gz`แƒ แƒแƒ“แƒ’แƒแƒœ แƒ˜แƒก แƒแƒ  แƒฃแƒญแƒ”แƒ แƒก แƒ›แƒฎแƒแƒ แƒก แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒก แƒ—แƒ•แƒšแƒ”แƒ‘แƒ˜.

แƒ แƒแƒขแƒแƒ›? Linux-แƒ˜แƒก แƒ“แƒ˜แƒกแƒขแƒ แƒ˜แƒ‘แƒฃแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒฃแƒ›แƒ”แƒขแƒ”แƒกแƒแƒ‘แƒ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก C แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒ˜แƒก แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ˜แƒก GNU แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒก (glibc), แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒคแƒแƒฅแƒขแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“ แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก C-แƒจแƒ˜ แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ, แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก แƒžแƒ˜แƒ—แƒแƒœแƒ˜. แƒ›แƒแƒ’แƒ แƒแƒ› Alpine แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก `musl`-แƒก แƒ“แƒ แƒ แƒแƒ“แƒ’แƒแƒœ แƒ”แƒก แƒ‘แƒ˜แƒœแƒแƒ แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜แƒ `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 แƒฌแƒแƒ›แƒ˜! แƒฎแƒแƒšแƒ แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒ–แƒแƒ›แƒแƒ 851 แƒ›แƒ‘.

แƒแƒšแƒžแƒฃแƒ แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒแƒก แƒ’แƒแƒชแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ— แƒ›แƒ”แƒขแƒ˜ แƒ“แƒ แƒ แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ, แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒฃแƒคแƒ แƒ แƒ“แƒ˜แƒ“แƒ˜ แƒ–แƒแƒ›แƒ˜แƒกแƒแƒ แƒ“แƒ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ›แƒแƒ˜แƒœแƒช แƒฃแƒœแƒ“แƒ แƒ›แƒแƒซแƒ”แƒ‘แƒœแƒแƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ. แƒ—แƒฅแƒ•แƒ”แƒœ, แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒแƒ›แƒชแƒ˜แƒ แƒแƒ— แƒแƒกแƒแƒ›แƒ‘แƒšแƒ”แƒ˜แƒก แƒ–แƒแƒ›แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ›แƒ แƒแƒ•แƒแƒšแƒกแƒแƒคแƒ”แƒฎแƒฃแƒ แƒ˜แƒแƒœแƒ˜ แƒจแƒ”แƒœแƒแƒ‘แƒ”แƒ‘แƒ˜ แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ›แƒ”แƒขแƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒ แƒ’แƒแƒกแƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ”แƒšแƒ˜.

แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก!

Alpine แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ•แƒ˜แƒแƒก แƒ›แƒแƒฃแƒšแƒแƒ“แƒœแƒ”แƒšแƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก

  • แƒ—แƒ”แƒแƒ แƒ˜แƒฃแƒšแƒแƒ“, musl แƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒแƒ“แƒ˜แƒ glibc-แƒ—แƒแƒœ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒจแƒ˜ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ‘แƒ”แƒ•แƒ  แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒก แƒ˜แƒฌแƒ•แƒ”แƒ•แƒก. แƒ“แƒ แƒ—แƒฃ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒแƒ แƒ˜แƒแƒœ, แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒแƒšแƒ‘แƒแƒ— แƒฃแƒกแƒ˜แƒแƒ›แƒแƒ•แƒœแƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ. แƒแƒฅ แƒแƒ แƒ˜แƒก แƒ แƒแƒ›แƒแƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฌแƒแƒ แƒ›แƒแƒ˜แƒจแƒ•แƒแƒก:
  • Alpine-แƒก แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“ แƒแƒฅแƒ•แƒก แƒซแƒแƒคแƒ˜แƒก แƒ“แƒแƒขแƒ˜แƒก แƒฃแƒคแƒ แƒ แƒ›แƒชแƒ˜แƒ แƒ” แƒ–แƒแƒ›แƒ, แƒ แƒแƒ›แƒแƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ•แƒ˜แƒแƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜ แƒžแƒ˜แƒ—แƒแƒœแƒจแƒ˜
  • แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ›แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ›แƒ แƒแƒฆแƒ›แƒแƒแƒฉแƒ˜แƒœแƒ แƒ”แƒก แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒฃแƒคแƒ แƒ แƒœแƒ”แƒšแƒ˜แƒ แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒก musl แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒก (แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ glibc-แƒกแƒ’แƒแƒœ).
  • แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ˜แƒžแƒแƒ•แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ แƒ—แƒแƒ แƒ˜แƒฆแƒ˜แƒก แƒคแƒแƒ แƒ›แƒแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒแƒก

แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒ”แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜ แƒฃแƒ™แƒ•แƒ” แƒ’แƒแƒ›แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ•แƒ˜แƒœ แƒ˜แƒชแƒ˜แƒก แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ.

แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒแƒšแƒžแƒฃแƒ แƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜ แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

แƒ—แƒฃ แƒแƒ  แƒ’แƒกแƒฃแƒ แƒ— แƒจแƒ”แƒฌแƒฃแƒฎแƒ“แƒ”แƒ— แƒ“แƒ˜แƒ“แƒ˜ แƒ“แƒ แƒ’แƒ แƒซแƒ”แƒšแƒ˜ แƒœแƒแƒ’แƒ”แƒ‘แƒแƒ‘แƒ”แƒ‘แƒ˜แƒ—, แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒžแƒแƒขแƒ”แƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒซแƒ˜แƒ”แƒ‘แƒแƒจแƒ˜, แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— Alpine Linux, แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒแƒ‘แƒแƒ–แƒ˜แƒกแƒ แƒกแƒฃแƒ แƒแƒ—แƒ˜. แƒ™แƒแƒ แƒ’แƒ˜ แƒกแƒแƒ‘แƒแƒ–แƒ˜แƒกแƒ แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒแƒ แƒฉแƒ”แƒ•แƒ.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ