首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从在另一个码头运行的Geoserver连接到在码头运行的Postgis

无法从在另一个码头运行的Geoserver连接到在码头运行的Postgis
EN

Stack Overflow用户
提问于 2020-10-07 10:47:08
回答 1查看 1.4K关注 0票数 2

我为Geoserver和Postgis使用了卡托萨氏码头映像,并使用提供的docker -Compose.yml在两个码头容器中启动了它们:

代码语言:javascript
复制
version: '2.1'

volumes:
   geoserver-data:
   geo-db-data:

services:
   db:
      image: kartoza/postgis:12.0
      volumes:
         - geo-db-data:/var/lib/postgresql
      ports:
        - "25434:5432"
      env_file:
      - docker-env/db.env
      restart: on-failure
      healthcheck:
        test: "exit 0"

   geoserver:
      image: kartoza/geoserver:2.17.0
      volumes:
        - geoserver-data:/opt/geoserver/data_dir
      ports:
        - "8600:8080"
      restart: on-failure
      env_file:
        - docker-env/geoserver.env
      depends_on:
        db:
          condition: service_healthy
      healthcheck:
        test: curl --fail -s http://localhost:8080/ || exit 1
        interval: 1m30s
        timeout: 10s
        retries: 3

引用的.env文件是:

db.env

代码语言:javascript
复制
POSTGRES_DB=gis,gwc
POSTGRES_USER=docker
POSTGRES_PASS=docker
ALLOW_IP_RANGE=0.0.0.0/0

geoserver.env

代码语言:javascript
复制
GEOSERVER_DATA_DIR=/opt/geoserver/data_dir
ENABLE_JSONP=true
MAX_FILTER_RULES=20
OPTIMIZE_LINE_WIDTH=false
FOOTPRINTS_DATA_DIR=/opt/footprints_dir
GEOWEBCACHE_CACHE_DIR=/opt/geoserver/data_dir/gwc
GEOSERVER_ADMIN_PASSWORD=myawesomegeoserver
INITIAL_MEMORY=2G
MAXIMUM_MEMORY=4G
XFRAME_OPTIONS='false'
STABLE_EXTENSIONS=''
SAMPLE_DATA=false
GEOSERVER_CSRF_DISABLED=true

docker-compose up使两个容器都启动并运行,没有错误,给它们命名为backend_db_1 (Postgis)和backend_geoserver_1 (Geoserver)。我可以访问运行在backend_geoserver_1中的Geoserver,并按预期在http://localhost:8600/geoserver/下运行。我可以将一个外部的、基于AWS的Postgis作为数据存储连接到我基于码头的Geoserver实例中,而不会出现任何问题。我还可以从PgAdmin、命令行和Webstorm访问在码头容器backend_db_1中运行的Postgis,使用psql

但是,如果我试图使用运行在backend_db_1中的Postgis作为运行在backend_geoserver_1中的Geoserver的数据存储,则会得到以下错误:

代码语言:javascript
复制
> Error creating data store, check the parameters. Error message: Unable
> to obtain connection: Cannot create PoolableConnectionFactory
> (Connection to localhost:25434 refused. Check that the hostname and
> port are correct and that the postmaster is accepting TCP/IP
> connections.)

因此,我在backend_geoserver_1中的Geoserver可以连接到AWS上的Postgis,但不能连接到在同一个本地主机上运行在另一个码头容器中的一个。backend_db_1中的Postgis可以从许多其他本地应用程序和工具中访问,但不能从在码头容器中运行的Geoserver访问。

知道我错过了什么吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-07 11:42:28

只需将network_mode添加到数据库和geoserver中的YAML中,并将其设置为host

代码语言:javascript
复制
network_mode: host

请注意,这将忽略暴露选项,并将使用主机网络(容器网络)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64242453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档