PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Błąd:nie znaleziono pliku wykonywalnego pg_config podczas instalacji psycopg2 na Alpine w Dockerze

Testowane z Pythonem 3.4.8, 3.5.5, 3.6.5 i 2.7.14 (wystarczy zastąpić 3 przez 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"]

Wyjaśnienie:aby zbudować Psycopg potrzebujesz pakietów gcc musl-dev postgresql-dev . Następnie potrzebujesz również tego pliku wykonywalnego pg_config:po prostu instalując postgresql-dev zadziała, postgresql-libs również działa dobrze i zajmuje około 12 MB mniej miejsca.

Oto oryginalna wersja odpowiedzi (na podstawie tego pliku Dockerfile), w której ręcznie instaluję Pythona na czystym obrazie Alpine, ponieważ w tym czasie Python nie dostarczał obrazu Docker z Pythonem 3.6 i Alpine 3.7. Jeśli chcesz w ten sposób zainstalować Pythona 2.7, wykonaj także apk add py2-pip (zwane py-pip w starszych repozytoriach 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"]


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przegląd kompilacji Just-in-Time (JIT) dla PostgreSQL

  2. Jak zaimplementować priorytety w SQL (postgres)

  3. Jak zaktualizować wybrane wiersze wartościami z pliku CSV w Postgresie?

  4. Czy używanie tablic w bazie danych to zły projekt?

  5. Wzorce i modyfikatory szablonów do formatowania daty/godziny w PostgreSQL