问题描述
我像往常一样使用postgres映像使用docker创建了一个数据库
docker run -d \
--name some-postgres \
-e POSTGRES_PASSWORD=mypassword \
-v ${HOME}/postgres-data/:/var/lib/postgresql/data \
-p 5432:5432 \
postgres
现在我决定在其中一个表中添加一个新列,以使用Postgis存储坐标,但是当我这样做时
CREATE EXTENSION postgis;
或类似的信息,我收到此错误消息:
ERROR: Could not open extension control file "/usr/share/postgresql/12/extension/postgis.control": No such file or directory
在运行docker容器之前是否还需要执行其他步骤以安装postgis?
非常感谢
解决方法
postgis扩展名不随Vanilla postgres一起提供,它附带了一大堆更通用的扩展名,尽管地理空间方面没有什么值得注意的。让我们看看:https://registry.hub.docker.com/r/postgis/postgis/
,我知道已经有回复,但这可以帮助某人
============= 步骤 ==============
第 1 步 - 首先,您应该已经有一个 Postgres 映像,然后在 postgres docker 容器 运行之后。
[链接 2] (https://dev.to/shree_j/how-to-install-and-run-psql-using-docker-41j2)!
第 2 步 - 在您应该拥有 POSTGIS DOCKER 图像
[voir ici] : https://hub.docker.com/r/kartoza/postgis/
第 3 步 - 下图显示了所有这些步骤后的配置 [此处链接]:https://i.stack.imgur.com/QuSA0.png
第 4 步 - 在你应该停止在端口 5432 上运行的 postgres 容器之后
第 5 步 - 现在我们可以创建将我们的 postgres 容器 与我们的 postgis 扩展
链接起来的容器sudo docker run -d --name postgis_postgres -e POSTGRES_PASSWORD=postgrespassword -e POSTGRES_USER=postgres -v /home/judith/Documents/postgres/db-data/:/var/lib/postgresql/data -p 8000:8000 kartoza/postgis:9.6-2.4
这里/home/judith/Documents/postgres/db-data/是postgres容器的数据库数据的路径 result of this step here
步骤 6 - 现在我们可以使用命令
进入在步骤 5 中创建的正在运行的容器judith@jlas:~$ sudo docker exec -it postgis_postgres bash
root@544c89fadeda:/# //you will be there
STEP 7 - 在此处编写将链接到 postgres 控制台管理员的命令 5432 是我的 postgres 容器运行的端口,postgres 是我的配置中 postgres 的管理员,您将在步骤 1 中配置数据库管理员,不用担心。
root@544c89fadeda:/# psql -h localhost -p 5432 -U postgres
第 8 步 - 创建后POSTGIS EXTENSION
postgres=# CREATE EXTENSION postgis;
CREATE EXTENSION
postgres=#