在docker容器中安装Postgis

问题描述 投票:0回答:2

我像往常一样使用 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?

postgresql docker postgis
2个回答
24
投票

postgis 扩展不附带普通的 postgres,后者确实附带了一大堆更通用的扩展,尽管对于地理空间没有什么值得注意的。看看这个:https://registry.hub.docker.com/r/postgis/postgis/


17
投票

我知道已经有了回应,但这可以帮助某人

  1. 首先你应该已经有一个 Postgres 镜像并且在运行 postgres docker 容器之后。

链接2

  1. 您应该拥有POSTGIS DOCKER IMAGE

[voir ici]:https://hub.docker.com/r/kartoza/postgis/

  1. 下图显示了所有这些步骤后我的配置

link here

  1. 在您应该停止正在运行的 postgres 容器之后,该容器在端口 5432 为我运行

这可能有帮助:https://blog.eduonix.com/software-development/learn-stop-kill-clean-docker-containers/#:~:text=To%20stop%20a%20container%20you,the% 20杀%20是%2010%20秒.

  1. 现在我们可以创建将我们的 postgres 容器 与我们的 postgis 扩展
  2. 链接的容器
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

  1. 现在我们可以使用命令进入在步骤5创建的正在运行的容器中
judith@jlas:~$ sudo docker exec -it postgis_postgres bash
root@544c89fadeda:/# //you will be there 
  1. 在此处编写将链接到 postgres 控制台管理的命令 5432是我的postgres容器运行的端口,postgres是我的配置中postgres的管理员,您将在第1步中配置数据库管理员,不用担心。
root@544c89fadeda:/# psql -h localhost -p 5432 -U postgres

you can see the result here

  1. 创建后POSTGIS 扩展
postgres=# CREATE EXTENSION postgis;
CREATE EXTENSION
postgres=#
© www.soinside.com 2019 - 2024. All rights reserved.