使用 psql 连接到在 Docker 容器中运行的 Postgres

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

我正在尝试使用 PostGIS 扩展运行本地 Postgres 数据库,然后使用 shapefile 填充数据库,而无需手动加载数据。

我有一个

docker-compose.yml
,我首先使用 postgis docker 映像并使用端口 5432。我已经在容器运行时对此进行了测试,并且可以成功连接。

第二部分,

import-shapefile
使用postgres图像并安装所需的扩展,转换shapefile并将结果添加到在postgis容器中运行的数据库中。

docker-compose.yml:

services:
  postgis:
    image: postgis/postgis
    restart: always
    env_file:
      - .env
    ports:
      - 5432:5432
    platform: linux/amd64
    volumes:
      - ./dataset:/dataset

  import-shapefile:
    image: postgres
    depends_on:
      - postgis
    volumes:
      - ./dataset:/dataset
    entrypoint: sh
    command: -c "apt-get update && apt-get install -y postgis && shp2pgsql -s 4326 -I -D -W UTF-8 dataset/my_shapefile.shp my_table | psql -U username -d my_db"
    environment:
      - POSTGRES_USER
      - POSTGRES_DB

查看容器日志时,我在 import-shapefile 容器中看到错误:

sql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
Is the server running locally and accepting connections on that socket?

有谁知道如何在 docker-compose.yml 文件中解决这个问题?

postgresql docker postgis psql shapefile
1个回答
0
投票

有一种更简单的方法可以仅使用一个容器来实现这一目标。您可以使用 Kartoza 著名的 PostGIS 映像,它具有一些方便的功能,例如在容器启动时加载脚本。该映像还安装了 shp2pgsql。请阅读此处

© www.soinside.com 2019 - 2024. All rights reserved.