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
或其他客户端工具,请在您的主机或其他容器中本地安装它们。
我是 运行 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
或其他客户端工具,请在您的主机或其他容器中本地安装它们。