我正在尝试将 postgis 安装到 postgres 容器中。 Dockerfile:
FROM postgres:9.6.4-alpine
RUN apk update \
&& apk add -u postgresql-9.6-postgis-2.4 postgresql-9.6-postgis-2.4-scripts \
&& rm -rf /var/lib/apt/lists/*
COPY ./scripts/postgis.sh /docker-entrypoint-initdb.d/postgis.sh
postgis.sh:
#!/bin/sh
for DB in $(psql -t -c "SELECT datname from pg_database where datname = 'backend'"); do
echo "Loading PostGIS extensions into $DB"
"${psql[@]}" --dbname="$DB" <<-'EOSQL'
CREATE EXTENSION IF NOT EXISTS postgis;
EOSQL
done
我收到了这个错误:
错误:不可满足的约束:postgresql-9.6-postgis-2.4(缺失):要求:world[postgresql-9.6-postgis-2.4] postgresql-9.6-postgis-2.4-scripts(缺失):要求:world[postgresql-9.6 -postgis-2.4-scripts] 命令 ‘/bin/sh -c apk update && apk add -u postgresql-9.6-postgis-2.4 postgresql-9.6-postgis-2.4-scripts && rm -rf /var/lib/apt/ lists/*’ 返回一个非零代码:2
我发现了类似的问题,例如:
但这并没有解决我的问题。如何使用 apk 将 postgis 扩展添加到我的 postgres 容器中?
原文由 Slim 发布,翻译遵循 CC BY-SA 4.0 许可协议
Postgis 软件包仅在 edge alpine repo 中可用,而不是在稳定版中。这就是为什么您会收到“不可满足的约束”错误。
但无论如何,您可以从 edge repo 安装
postgis
:所以,最终的
Dockerfile
是:2020 年 1 月 23 日更新:
从 Alpine 版本 3.11 开始, Postgis 可在主要和社区存储库中使用:
对于 Alpine 版本 3.11 及更高版本,您不需要使用边缘 repo 测试分支。