Установка postgresql-dev для Postgres 9.6.x в Dockerfile? - PullRequest
2 голосов
/ 10 апреля 2019

Я безрезультатно искал в интернете 2 дня, сейчас искал способ установить postgresql-dev для 9.6 из-за крайне устаревшего депо, которое я пытаюсь запустить.К сожалению, выполнение следующих команд Dockerfile:

FROM python:2.7-alpine
ENV PYTHONUNBUFFERED 1
RUN mkdir /app/
RUN mkdir ./app/logs/
RUN mkdir ./app/xxx/
WORKDIR /app/xxx/
ADD requirements.txt /app/xxx/
ADD ./ /app/xxx/
RUN apk --update add python py-pip openssl postgresql-dev ca-certificates py-openssl libffi-dev musl-dev openssl-dev wget build-base gcc python-dev py-pip jpeg-dev zlib-dev libx
ml2 libxslt-dev                                                                                                                                                                 
ENV LIBRARY_PATH=/lib:/usr/lib
RUN pip install --upgrade pip setuptools
RUN pip install psycopg2==2.4.5

Дает мне следующую ошибку:

Collecting psycopg2==2.4.5
  Downloading https://files.pythonhosted.org/packages/36/77/894a5dd9f3f55cfc85682d3e6473ee5103d8d418b95baf4019fad3ffa026/psycopg2-2.4.5.tar.gz (719kB)
    Complete output from command python setup.py egg_info:
    running egg_info
    creating pip-egg-info/psycopg2.egg-info
    writing pip-egg-info/psycopg2.egg-info/PKG-INFO
    writing top-level names to pip-egg-info/psycopg2.egg-info/top_level.txt
    writing dependency_links to pip-egg-info/psycopg2.egg-info/dependency_links.txt
    writing manifest file 'pip-egg-info/psycopg2.egg-info/SOURCES.txt'
    Error: could not determine PostgreSQL version from '11.2'

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-UcoQQZ/psycopg2/

Что, как я понимаю, означает, что я устанавливаю PostgreSQL 11.2 из postgresql-dev, когда мне нужно9.6.Кажется, я нигде не могу найти этот apk, и запуск postgresql-dev = 9.6.5 или его эквивалентов тоже не работает.

Есть ли способ получить эту версию postgresql-dev от python2.7 alpine (или любого другого докера)?Я видел, что есть док-контейнеры postgres, но я новичок в докере и не могу их запустить (psycopg2 не смог найти их установки)

Ответы [ 2 ]

2 голосов
/ 12 апреля 2019

Ближайшая версия к postgresql-dev 9.6.5 в репозиториях Alpine - 9.6.10-r0, используемая в Alpine 3.5: https://pkgs.alpinelinux.org/package/v3.5/main/x86_64/postgresql-dev

Независимо от вашей версии Alpine, вы можете дать команду apk выбрать именно эту версиюиз хранилища apk V3.5:

apk add postgresql-dev=9.6.10-r0 --repository=http://dl-cdn.alpinelinux.org/alpine/v3.5/main
1 голос
/ 10 апреля 2019

Это работает для меня:

# Python 3.6 on Alpine linux, a snall secure flavor of linux
FROM python:3.6-alpine

# Add community repositories to install dependencies
RUN echo "http://dl-8.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories

# These dependencies are required for matplotlib and numpy
RUN apk --no-cache --update-cache add gcc freetype-dev libpng-dev musl-dev linux-headers g++ gfortran python3-dev

# This symlink fixes an error in numpy compilation
RUN ln -s /usr/include/locale.h /usr/include/xlocale.h

# Postgres libs and dependencies, plus python-ldap depdency
RUN apk --no-cache --update-cache add postgresql-libs postgresql-dev libffi-dev openldap-dev unixodbc-dev git 

COPY requirements.txt /app_name/requirements.txt

RUN pip3 install --upgrade pip
RUN pip3 intall --upgrade setuptools

RUN pip3 install -r /app_name/requirements.txt # includes psycopg2==2.7.3.1

Возможно, вы можете перевести это для работы с python27?

(кстати, Python 2.7 скоро уйдет, к вашему сведению)

...