PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Errore:pg_config eseguibile non trovato durante l'installazione di psycopg2 su Alpine in Docker

Testato con Python 3.4.8, 3.5.5, 3.6.5 e 2.7.14 (basta sostituire 3 con 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"]

Spiegazione:per compilare Psycopg sono necessari i pacchetti gcc musl-dev postgresql-dev . Quindi hai anche bisogno dell'eseguibile pg_config:mentre installi semplicemente postgresql-dev funzionerà, postgresql-libs va bene e occupa anche 12 MB in meno di spazio.

Ecco la versione originale della risposta (basata su questo Dockerfile) in cui installo manualmente Python su un'immagine Alpine pura perché a quel tempo Python non forniva l'immagine Docker con Python 3.6 e Alpine 3.7. Se vuoi installare Python 2.7 in questo modo, fai anche apk add py2-pip (chiamato py-pip nei vecchi repository alpini).

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"]