Docker 和 Postgis - 如何访问我的 docker 容器内的 shp2pgsql?

Docker and Postgis - How do I access shp2pgsql inside my docker container?

我是 运行 postgres 在 docker 容器中使用 docker-compose 并且它没有问题地启动并且我能够连接到数据库。但是现在我想进入容器并执行 postgis shp2pgsql 来加载形状文件,但该命令似乎不存在。下面是我的代码:

docker-compose.yaml

version: '3'

services:
  db:
    container_name: pg_container
    image: postgis/postgis
    restart: always
    environment:
      POSTGRES_USER: root
      POSTGRES_PASSWORD: root
      POSTGRES_DB: test_db
    volumes:
        - ./data:/var/lib/postgresql/
        - ./postgres_init:/postgres_init
    ports:
        - 5433:5433
    networks:
        - ch_ntw

networks:
  ch_ntw:
    driver: bridge
    ipam:
      config:
        - subnet: 10.222.1.0/24

进入容器:

docker exec -it pg_container bash

使用 psql 连接到数据库没有问题:

psql --host=pg_container --dbname=test_db --username=root

但是如果我尝试从 bash 调用 shp2pgsql,我会得到以下信息:

 shp2pgsql -s 2263:4326 postgres_init/nyct2010_15b/nyct2010.shp | psql -d test_db

bash: shp2pgsql: command not found

我认为既然这是一个 postgis 容器,那么应​​该可以访问该功能,不是吗?

shp2pgsql 是客户端包。 postgis/postgis 图像仅为 PostGIS 服务器组件。如果您想使用 shp2pgsql 或其他客户端工具,请在您的主机或其他容器中本地安装它们。