在Docker容器中安装Postgis

19

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

非常感谢。

2个回答

24

2
谢谢,这很有帮助。 实际上我只需要运行相同的命令,但使用postgis镜像并挂载与vanilla postgres相同的卷。 docker run -d \ --name some-other-postgres \ -e POSTGRES_PASSWORD=mypassword \ -v ${HOME}/postgres-data/:/var/lib/postgresql/data \ -p 5432:5432 \ postgis/postgis - DatGuy

14

我知道已经有一个回答了,但这可能会帮助到某些人

  1. 首先,您应该已经拥有一个Postgres镜像,并且正在运行一个postgres Docker容器。

链接 2

  1. 之后您应该拥有POSTGIS DOCKER IMAGE

[请见此处]: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%20killing%20is%2010%20seconds

  1. 现在我们可以创建一个容器,该容器将链接我们的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容器的数据库数据路径。

此步骤的结果在此处

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

    您可以在此处查看结果

    1. 当您创建好 POSTGIS EXTENSION
    postgres=# CREATE EXTENSION postgis;
    CREATE EXTENSION
    postgres=#
    

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接