Testováno s Pythonem 3.4.8, 3.5.5, 3.6.5 a 2.7.14 (stačí nahradit 3 za 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"]
Vysvětlení:k sestavení Psycopg potřebujete balíčky gcc musl-dev postgresql-dev
. Pak také potřebujete spustitelný soubor pg_config:při jednoduché instalaci postgresql-dev
bude fungovat, postgresql-libs
funguje také dobře a zabírá o 12 MB méně místa.
Zde je původní verze odpovědi (založená na tomto souboru Dockerfile), kde ručně nainstaluji Python na čistý obraz Alpine, protože v té době Python neposkytoval obraz Docker s Pythonem 3.6 a Alpine 3.7. Pokud chcete nainstalovat Python 2.7 takto, proveďte také apk add py2-pip
(tzv. py-pip
ve starších repozitářích 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"]