Тествано с Python 3.4.8, 3.5.5, 3.6.5 и 2.7.14 (просто заменете 3 с 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"]
Обяснение:за да изградите Psycopg имате нужда от пакетите gcc musl-dev postgresql-dev
. Тогава имате нужда и от този изпълним файл pg_config:докато просто инсталирате postgresql-dev
ще работи, postgresql-libs
също се справя добре и заема около 12 MB по-малко място.
Ето оригиналната версия на отговора (базирана на този Dockerfile), където ръчно инсталирах Python на чисто Alpine изображение, тъй като по това време Python не предостави изображението на Docker с Python 3.6 и Alpine 3.7. Ако искате да инсталирате Python 2.7 по този начин, също направете apk add py2-pip
(наречен py-pip
в по-стари репозитории Alpine).
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"]