私は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(missing):必要なもの: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でpostgresコンテナーにpostgis拡張機能を追加するにはどうすればよいですか。
Postgis パッケージはEdge Alpineリポジトリでのみ使用でき、安定版では使用できません。そのため、「満たされない制約」エラーが発生します。
ただし、とにかくEdgeリポジトリからpostgis
をインストールできます。
# echo "http://dl-cdn.alpinelinux.org/Alpine/Edge/testing" >> /etc/apk/repositories
# apk update
fetch http://dl-cdn.alpinelinux.org/Alpine/v3.5/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/Alpine/v3.5/community/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/Alpine/Edge/testing/x86_64/APKINDEX.tar.gz
WARNING: This apk-tools is OLD! Some packages might not function properly.
v3.5.2-254-g9d4623dc57 [http://dl-cdn.alpinelinux.org/Alpine/v3.5/main]
v3.5.2-247-gc85efb30e1 [http://dl-cdn.alpinelinux.org/Alpine/v3.5/community]
v3.7.0-2163-ge03552fc58 [http://dl-cdn.alpinelinux.org/Alpine/Edge/testing]
OK: 10930 distinct packages available
# apk search --no-cache postgis
fetch http://dl-cdn.alpinelinux.org/Alpine/v3.5/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/Alpine/v3.5/community/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/Alpine/Edge/testing/x86_64/APKINDEX.tar.gz
WARNING: This apk-tools is OLD! Some packages might not function properly.
postgis-dev-2.4.1-r1
postgis-2.4.1-r1
postgis-doc-2.4.1-r1
したがって、最終的なDockerfile
は次のとおりです。
FROM postgres:9.6.4-Alpine
RUN echo "http://dl-cdn.alpinelinux.org/Alpine/Edge/testing" >> /etc/apk/repositories
RUN apk update \
&& apk add -u postgis \
&& rm -rf /var/lib/apt/lists/*
COPY ./scripts/postgis.sh /docker-entrypoint-initdb.d/postgis.sh