【问题标题】:Connect QGIS project in docker container with Postgres+Postgis in another docker container将 docker 容器中的 QGIS 项目与另一个 docker 容器中的 Postgres+Postgis 连接起来
【发布时间】:2020-10-05 20:11:39
【问题描述】:

有一个qgis项目,它有一个连接到数据库并从http://localhost:5432获取数据的层。当项目在 Qgis 桌面中打开时 - 一切正常 - 您在 postgres (localhost:5432) 中更新数据 - 图层在地图上更新。

有一个在 docker 容器内启动的 QGIS 服务器。我将项目放在 qgis-server docker 容器(/etc/qgisserver)中,但项目无法在另一个 docker 容器中设置与数据库的连接(localhost:5432)。

我不明白如何让容器内的 qgis 服务器引用它的 localhost:5432,但可以访问主机的 localhost:5432(可以访问来自另一个容器的 postgres)。

我尝试过这样做但没有成功:

services:
  app_postgres:
    image: kartoza/postgis:latest
    container_name: app_postgres
    volumes:
      - ~/volumes/jhipster/app/postgresql/:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER=app
      - POSTGRES_PASSWORD=app
      - POSTGRES_DBNAME=app
      - POSTGRES_MULTIPLE_EXTENSIONS=postgis,hstore,postgis_topology,postgis_raster,pgrouting
    ports:
      - 5432:5432

  qgisserver:
    image: camptocamp/qgis-server:latest
    volumes:
      - ~/qgis/projects:/etc/qgisserver
    links:
      - app_postgres:db
    ports:
      - 8380:80
    depends_on:
      - app_postgres

【问题讨论】:

    标签: docker docker-compose postgis qgis


    【解决方案1】:

    我是这样成功的:

    • 我已经在桥接网络中连接了 QGIS 和 Postgis 容器;

    • 为 Postgis 和 Qgis 容器分配了显式 IP 地址;

    • 我已更改 QGIS 容器中的 /etc/hosts 文件,以便从 QGIS 容器调用“localhost”将导致 Postgis 容器。

    所以现在部署在 QGIS 服务器上的项目从附近的容器连接到 Postgis。 docker-compose YAML 现在看起来像:

    version: '3.4'
    services:
      db:
        image: kartoza/postgis:latest
        container_name: docker_app_postgres
        volumes:
          - ~/volumes/jhipster/app/postgresql/:/var/lib/postgresql/data/
        environment:
          - POSTGRES_USER=app
          - POSTGRES_PASSWORD=app
          - POSTGRES_DBNAME=app
          - POSTGRES_MULTIPLE_EXTENSIONS=postgis,hstore,postgis_topology,postgis_raster,pgrouting
        networks:
          bridge_geo:
            ipv4_address: 172.28.1.1
        ports:
          - 5432:5432
    
      qgisserver:
        image: camptocamp/qgis-server:latest
        container_name: docker_app_qgis
        volumes:
          - ~/qgis/projects:/etc/qgisserver
        networks:
          bridge_geo:
            ipv4_address: 172.28.1.2
        extra_hosts:
          localhost: 172.28.1.1
        ports:
          - 8380:80
        depends_on:
          - db
    
    networks:
      bridge_geo:
        ipam:
          driver: default
          config:
            - subnet: 172.28.0.0/16
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-08
      • 2019-03-17
      • 2021-11-01
      • 1970-01-01
      • 2020-08-02
      • 1970-01-01
      • 2019-02-24
      • 1970-01-01
      相关资源
      最近更新 更多