我为Geoserver和Postgis使用了卡托萨氏码头映像,并使用提供的docker -Compose.yml在两个码头容器中启动了它们:
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
POSTGRES_DB=gis,gwc
POSTGRES_USER=docker
POSTGRES_PASS=docker
ALLOW_IP_RANGE=0.0.0.0/0geoserver.env
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=truedocker-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的数据存储,则会得到以下错误:
> 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访问。
知道我错过了什么吗?谢谢!
发布于 2020-10-07 11:42:28
只需将network_mode添加到数据库和geoserver中的YAML中,并将其设置为host
network_mode: host请注意,这将忽略暴露选项,并将使用主机网络(容器网络)。
https://stackoverflow.com/questions/64242453
复制相似问题