Testad med Python 3.4.8, 3.5.5, 3.6.5 och 2.7.14 (ersätt bara 3 med 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"]
Förklaring:för att bygga Psycopg behöver du paketen gcc musl-dev postgresql-dev
. Då behöver du också den körbara pg_config:medan du helt enkelt installerar postgresql-dev
kommer att fungera, postgresql-libs
fungerar också bra och tar upp cirka 12 MB mindre utrymme.
Här är den ursprungliga versionen av svaret (baserat på den här Dockerfilen) där jag manuellt installerar Python på en ren Alpine-bild eftersom Python vid den tiden inte försåg Docker-bilden med Python 3.6 och Alpine 3.7. Om du vill installera Python 2.7 så, gör också apk add py2-pip
(kallas py-pip
i äldre alpina repos).
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"]