Установка psycopg2 для python: 2.7-alpine в Docker

Чтобы использовать PostgreSql в python, мне нужно

pip install psycopg2   

Однако он имеет зависимость от libpq-dev и python-dev. Интересно, как установить зависимости в альпийском? Спасибо.

Вот файл Docker:

FROM python:2.7-alpine

RUN apk add python-dev libpq-dev
RUN pip install psycopg2

а выход:

Шаг 3: RUN apk add python-dev libpq-dev --- > Запуск в 3223b1bf7cde ПРЕДУПРЕЖДЕНИЕ: Игнорирование APKINDEX.167438ca.tar.gz: Нет такого файла или каталог ПРЕДУПРЕЖДЕНИЕ: Игнорирование APKINDEX.a2e6dac0.tar.gz: Нет такого файла или каталог ERROR: неудовлетворительные ограничения: libpq-dev (отсутствует):     Требуется: world [libpq-dev] python-dev (отсутствует):     Требуется: world [python-dev] ОШИБКА: Service 'service' не удалось создать: команда '/bin/sh -c apk add python-dev libpq-dev' вернулась ненулевой код: 2

Ответ 1

Если вам нужно установить psycopg2 для python 2.7 на изображение Docker на основе python: 2.7-alpine, то следующий код для Dockerfile будет приятным для вас:

FROM python:2.7-alpine

RUN apk update && \
    apk add --virtual build-deps gcc python-dev musl-dev && \
    apk add postgresql-dev

RUN pip install psycopg2

Ответ 2

Объяснение перед компиляцией/установкой psycopg2

libpq - клиентская библиотека для PostgreSQL https://www.postgresql.org/docs/9.5/libpq.html

postgresql-dev - это пакет с заголовками для связывания libpq в библиотеке/бинарном файле, как и в psycopg.

Я использую следующую конфигурацию в alpine 3.7, я добавляю некоторые комментарии, чтобы объяснить это.

# Installing client libraries and any other package you need
RUN apk update && apk add libpq

# Installing build dependencies
# For python3 you need to add python3-dev *please upvote the comment
# of @its30 below if you use this*
RUN apk add --virtual .build-deps gcc python-dev musl-dev postgresql-dev

# Installing and build python module
RUN pip install psycopg2

# Delete build dependencies
RUN apk del .build-deps

Ответ 3

Я не смог установить его из python:2.7.13-alpine. Закончилось:

FROM gliderlabs/alpine:3.3

RUN apk add --no-cache --update \
    python \
    python-dev \
    py-pip \
    build-base

RUN apk add --virtual build-deps gcc python-dev musl-dev && \
    apk add --no-cache --update postgresql-dev && \
    pip install psycopg2==2.7.1

Ответ 5

добавить его в Dockerfile

RUN apk update && apk add --no-cache --virtual .build-deps\
    postgresql-dev gcc libpq  python3-dev musl-dev linux-headers\ 
    && pip install --no-cache-dir -r requirements.txt\
    && apk del .build-deps\
    && rm -rf /var/cache/apk/*