Testé avec Python 3.4.8, 3.5.5, 3.6.5 et 2.7.14 (il suffit de remplacer 3 par 2) :
# You can use a specific version too, like python:3.6.5-alpine3.7
FROM python:3-alpine
WORKDIR /usr/src/app
COPY requirements.txt .
RUN \
apk add --no-cache postgresql-libs && \
apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev && \
python3 -m pip install -r requirements.txt --no-cache-dir && \
apk --purge del .build-deps
COPY . .
CMD ["python3", "app.py"]
Explication :pour compiler Psycopg vous avez besoin des packages gcc musl-dev postgresql-dev
. Ensuite, vous avez également besoin de cet exécutable pg_config :en installant simplement postgresql-dev
fonctionnera, postgresql-libs
fonctionne bien aussi et prend environ 12 Mo d'espace en moins.
Voici la version originale de la réponse (basée sur ce Dockerfile) où j'installe manuellement Python sur une image Alpine pure car à cette époque, Python ne fournissait pas l'image Docker avec Python 3.6 et Alpine 3.7. Si vous voulez installer Python 2.7 comme ça, faites aussi apk add py2-pip
(appelé py-pip
dans les dépôts Alpine plus anciens).
FROM alpine:3.7
WORKDIR /usr/src/app
COPY requirements.txt .
RUN \
apk add --no-cache python3 postgresql-libs && \
apk add --no-cache --virtual .build-deps gcc python3-dev musl-dev postgresql-dev && \
python3 -m pip install -r requirements.txt --no-cache-dir && \
apk --purge del .build-deps
COPY . .
CMD ["python3", "app.py"]