psycopg2 installation for python:2.7-alpine in Docker
要在python中使用PostgreSql,我需要
1 | pip install psycopg2 |
但是,它依赖于libpq-dev和python-dev。 我不知道如何在Alpine中安装依赖项? 谢谢。
这是一个Dockerfile:
1 2 3 4 | FROM python:2.7-alpine RUN apk ADD python-dev libpq-dev RUN pip install psycopg2 |
输出为:
Step 3 : RUN apk add python-dev libpq-dev ---> Running in
3223b1bf7cde WARNING: Ignoring APKINDEX.167438ca.tar.gz: No such file
or directory WARNING: Ignoring APKINDEX.a2e6dac0.tar.gz: No such file
or directory ERROR: unsatisfiable constraints: libpq-dev (missing):
required by: world[libpq-dev] python-dev (missing):
required by: world[python-dev] ERROR: Service 'service' failed to build: The command '/bin/sh -c apk add python-dev libpq-dev' returned
a non-zero code: 2
如果您只需要在基于python:2.7-alpine的Docker映像上安装python 2.7的psycopg2,那么以下Dockerfile代码将非常适合您:
1 2 3 4 5 6 7 | 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 |
编译/安装psycopg2之前的说明
我在alpine 3.7中使用以下配置,我添加了一些注释来解释它。
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 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 |
我无法从
1 2 3 4 5 6 7 8 9 10 11 | 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 |
似乎您需要的软件包是libpq而不是lobpq-dev:
https://pkgs.alpinelinux.org/package/edge/main/x86/py2-psycopg2
看一下右边的依赖
在Docker的Alpine Linux下运行Python 3.7和PostgreSQL时出现问题。
本文帮助https://www.rockyourcode.com/install-psycopg2-binary-with-docker/
最主要的是在需求文件中引用
1 2 3 | RUN apk UPDATE && \\ apk ADD --no-cache --virtual build-deps gcc python3-dev musl-dev && \\ apk ADD postgresql-dev |
帮助我的是:
1 2 3 4 5 6 7 8 9 10 11 12 | RUN apk ADD --no-cache python3 \\ && python3 -m ensurepip \\ && pip3 install --upgrade pip setuptools \\ && apk ADD build-base \\ && apk ADD gcc musl-dev libffi-dev openssl-dev python3-dev \\ && apk ADD postgresql-dev \\ && rm -r /usr/lib/python*/ensurepip && \\ IF [ ! -e /usr/bin/pip ]; THEN ln -s pip3 /usr/bin/pip ; fi && \\ IF [[ ! -e /usr/bin/python ]]; THEN ln -sf /usr/bin/python3 /usr/bin/python; fi && \\ rm -r /root/.cache RUN pip install --trusted-host pypi.python.org psycopg2 |
尤其是Docker中指示的
将其添加到dockerfile
1 2 3 4 5 | 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/* |