PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Erreur :exécutable pg_config introuvable lors de l'installation de psycopg2 sur Alpine dans Docker

Testé avec Python 3.4.8, 3.5.5, 3.6.5 et 2.7.14 (il suffit de remplacer 3 par 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"]

Explication :pour compiler Psycopg vous avez besoin des packages gcc musl-dev postgresql-dev . Ensuite, vous avez également besoin de cet exécutable pg_config :en installant simplement postgresql-dev fonctionnera, postgresql-libs fonctionne bien aussi et prend environ 12 Mo d'espace en moins.

Voici la version originale de la réponse (basée sur ce Dockerfile) où j'installe manuellement Python sur une image Alpine pure car à cette époque, Python ne fournissait pas l'image Docker avec Python 3.6 et Alpine 3.7. Si vous voulez installer Python 2.7 comme ça, faites aussi apk add py2-pip (appelé py-pip dans les dépôts Alpine plus anciens).

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