Getest met Python 3.4.8, 3.5.5, 3.6.5 en 2.7.14 (vervang gewoon 3 door 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"]
Uitleg:om Psycopg te bouwen heb je de pakketten gcc musl-dev postgresql-dev
nodig . Dan heb je ook dat pg_config executable nodig:terwijl je gewoon postgresql-dev
installeert zal werken, postgresql-libs
doet het ook prima en neemt zo'n 12 MB minder ruimte in beslag.
Hier is de originele versie van het antwoord (gebaseerd op dit Docker-bestand) waarbij ik Python handmatig installeer op een pure Alpine-afbeelding omdat Python op dat moment de Docker-afbeelding niet leverde met Python 3.6 en Alpine 3.7. Als je Python 2.7 op die manier wilt installeren, doe dan ook apk add py2-pip
(genaamd py-pip
in oudere Alpine repo's).
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"]