Testet med Python 3.4.8, 3.5.5, 3.6.5 og 2.7.14 (erstat bare 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"]
Forklaring:for at bygge Psycopg skal du bruge pakkerne gcc musl-dev postgresql-dev
. Så har du også brug for den eksekverbare pg_config:mens du blot installerer postgresql-dev
vil virke, postgresql-libs
fungerer også fint og fylder omkring 12 MB mindre.
Her er den originale version af svaret (baseret på denne Dockerfile), hvor jeg manuelt installerede Python på et rent Alpine-billede, fordi Python på det tidspunkt ikke leverede Docker-billedet med Python 3.6 og Alpine 3.7. Hvis du vil installere Python 2.7 sådan, skal du også apk add py2-pip
(kaldet py-pip
i ældre alpine 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"]