错误:在Alpine Docker映像上安装PostGIS时的约束无法满足

好的,因此任务似乎很简单!使用Alpine图像(因为它重量轻且安全)来执行一些PostgreSQL数据库创建/迁移。我使用的是以下Dockerfile使用的代码在这里:

FROM alpine:latest

RUN apk add -U postgresql

# install PostGIS

ENV POSTGIS_VERSION 2.5.2

ENV POSTGIS_SHA256 225aeaece00a1a6a9af15526af81bef2af27f4c198de820af1367a792ee1d1a9

RUN set -ex \

\

&& apk add --no-cache --virtual .fetch-deps \

ca-certificates \

openssl \

tar \

\

&& wget -O postgis.tar.gz "https://github.com/postgis/postgis/archive/$POSTGIS_VERSION.tar.gz" \

&& echo "$POSTGIS_SHA256 *postgis.tar.gz" | sha256sum -c - \

&& mkdir -p /usr/src/postgis \

&& tar \

--extract \

--file postgis.tar.gz \

--directory /usr/src/postgis \

--strip-components 1 \

&& rm postgis.tar.gz \

\

&& apk add --no-cache --virtual .build-deps \

autoconf \

automake \

g++ \

json-c-dev \

libtool \

libxml2-dev \

make \

perl \

\

&& apk add --no-cache --virtual .build-deps-edge \

--repository http://dl-cdn.alpinelinux.org/alpine/edge/testing \

--repository http://dl-cdn.alpinelinux.org/alpine/edge/main \

gdal-dev \

geos-dev \

proj4-dev \

protobuf-c-dev \

&& cd /usr/src/postgis \

&& ./autogen.sh \

# configure options taken from:

# https://anonscm.debian.org/cgit/pkg-grass/postgis.git/tree/debian/rules?h=jessie

&& ./configure \

# --with-gui \

&& make \

&& make install \

&& apk add --no-cache --virtual .postgis-rundeps \

json-c \

&& apk add --no-cache --virtual .postgis-rundeps-edge \

--repository http://dl-cdn.alpinelinux.org/alpine/edge/testing \

--repository http://dl-cdn.alpinelinux.org/alpine/edge/main \

geos \

gdal \

proj4 \

protobuf-c \

&& cd / \

&& rm -rf /usr/src/postgis \

&& apk del .fetch-deps .build-deps .build-deps-edge

COPY ./db-creator.sh /db-creator.sh

CMD ["./db-creator.sh"]

但是,apk由于某些unsatisfiable

constraints错误,未使用安装依赖项。错误如下,我打开的这个问题中提供了完整的日志。

ERROR: unsatisfiable constraints:

gdal-dev (missing):

required by: .build-deps-edge-20200123.143501[gdal-dev]

geos-dev (missing):

required by: .build-deps-edge-20200123.143501[geos-dev]

proj4-dev (missing):

required by: .build-deps-edge-20200123.143501[proj4-dev]

任何帮助表示赞赏。

回答:

github上的代码包含另一个图像postgres:11-alpine与问题中定义的图像进行比较alpine:latest

软件包gdal-

dev,geos-

dev,protobuf-c-

dev不再位于边缘仓库测试分支中,它们已迁移到稳定的v3.11存储库中。还被proj4-dev重命名为proj-

dev,它也位于稳定的v3.11存储库中。

因此,要解决此问题,Dockerfile我们只需要从v3.11 repo安装上述软件包,即更改这部分代码:

&& apk add --no-cache --virtual .build-deps \

autoconf \

automake \

g++ \

json-c-dev \

libtool \

libxml2-dev \

make \

perl \

\

&& apk add --no-cache --virtual .build-deps-edge \

--repository http://dl-cdn.alpinelinux.org/alpine/edge/testing \

--repository http://dl-cdn.alpinelinux.org/alpine/edge/main \

gdal-dev \

geos-dev \

proj4-dev \

protobuf-c-dev \

proj4-dev \

protobuf-c-dev \

对此:

&& apk add --no-cache --virtual .build-deps \

autoconf \

automake \

g++ \

gdal-dev \

geos-dev \

json-c-dev \

libtool \

libxml2-dev \

make \

perl \

proj-dev \

protobuf-c-dev \

\

最终Dockerfile是:

FROM alpine:3.11

RUN apk add -U postgresql

# install PostGIS

ENV POSTGIS_VERSION 2.5.2

ENV POSTGIS_SHA256 225aeaece00a1a6a9af15526af81bef2af27f4c198de820af1367a792ee1d1a9

RUN set -ex \

\

&& apk add --no-cache --virtual .fetch-deps \

ca-certificates \

openssl \

tar \

\

&& wget -O postgis.tar.gz "https://github.com/postgis/postgis/archive/$POSTGIS_VERSION.tar.gz" \

&& echo "$POSTGIS_SHA256 *postgis.tar.gz" | sha256sum -c - \

&& mkdir -p /usr/src/postgis \

&& tar \

--extract \

--file postgis.tar.gz \

--directory /usr/src/postgis \

--strip-components 1 \

&& rm postgis.tar.gz \

\

&& apk add --no-cache --virtual .build-deps \

autoconf \

automake \

g++ \

gdal-dev \

geos-dev \

json-c-dev \

libtool \

libxml2-dev \

make \

perl \

proj-dev \

protobuf-c-dev \

\

&& cd /usr/src/postgis \

&& ./autogen.sh \

# configure options taken from:

# https://anonscm.debian.org/cgit/pkg-grass/postgis.git/tree/debian/rules?h=jessie

&& ./configure \

# --with-gui \

&& make \

&& make install \

&& apk add --no-cache --virtual .postgis-rundeps \

json-c \

&& apk add --no-cache --virtual .postgis-rundeps-edge \

--repository http://dl-cdn.alpinelinux.org/alpine/edge/testing \

--repository http://dl-cdn.alpinelinux.org/alpine/edge/main \

geos \

gdal \

proj4 \

protobuf-c \

&& cd / \

&& rm -rf /usr/src/postgis \

&& apk del .fetch-deps .build-deps .build-deps-edge

COPY ./db-creator.sh /db-creator.sh

CMD ["./db-creator.sh"]

以上是 错误:在Alpine Docker映像上安装PostGIS时的约束无法满足 的全部内容, 来源链接: utcz.com/qa/427904.html

回到顶部