Docker-compose geoserver+postgis

如果想在docker中同时部署geoserver和postgis,可以采用官方镜像Docker Hub  

kartoza/postgis

1、新建一个工作目录,比如d:\project

2、新建一个docker-compose.yml配置文件,内容如下:

version: '3.9'

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

services:
   db:
      image: kartoza/postgis:14-3.1
      volumes:
         - geo-db-data:/var/lib/postgresql
      ports:
        - 32767:5432
      environment:
        - POSTGRES_DB=gis
        - POSTGRES_USER=docker
        - POSTGRES_PASS=docker
        - ALLOW_IP_RANGE=0.0.0.0/0
      restart: on-failure
      healthcheck:
        test: "exit 0"

   geoserver:
      image: kartoza/geoserver:2.20.1
      volumes:
        - geoserver-data:/opt/geoserver/data_dir
      ports:
        - 8600:8080
      restart: on-failure
      environment:
        - GEOSERVER_DATA_DIR=/opt/geoserver/data_dir
        - GEOSERVER_ADMIN_PASSWORD=123456
        - GEOSERVER_ADMIN_USER=admin
      depends_on:
        db:
          condition: service_healthy
      healthcheck:
        test: curl --fail -s http://localhost:8080/ || exit 1
        interval: 1m30s
        timeout: 10s
        retries: 3

3、在命令行中执行 docker-compose up 即可完成geoserver+postgis的docker部署

4、在浏览器中输入 http://127.0.0.1:8600/geoserver可进入管理界面,输入用户admin及密码123456

5、配置postgis数据源, 需要注意host:db, port:5432,database:gis ,用户:docker ,密码:docker

6、如果是外部程序需要访问postgis则host为本机ip,port为32767即对外映射的端口

7、如果要显示图层的标注, 需要增加一种样式,并将其与图层绑定,注意样式文件中 <ogc:PropertyName>label</ogc:PropertyName>  "label"是需要显示的字段名

<?xml version="1.0" encoding="GB2312"?>
<StyledLayerDescriptor version="1.0.0" 
 xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd" 
 xmlns="http://www.opengis.net/sld" 
 xmlns:ogc="http://www.opengis.net/ogc" 
 xmlns:xlink="http://www.w3.org/1999/xlink" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <NamedLayer>
    <Name>LABEL_LINE</Name>
    <UserStyle>
      <FeatureTypeStyle>
        <Rule>
          <LineSymbolizer>
            <Stroke>
              <CssParameter name="stroke">#0000FF</CssParameter>
            </Stroke>
          </LineSymbolizer>
          <TextSymbolizer>
            <Label>
              <ogc:PropertyName>label</ogc:PropertyName>
            </Label>
            <Font>
              <CssParameter name="font-family">微软雅黑</CssParameter>
              <CssParameter name="font-size">12</CssParameter>
              <CssParameter name="font-style">normal</CssParameter>
              <CssParameter name="font-weight">normal</CssParameter>
            </Font>
            <VendorOption name="followLine">true</VendorOption>
          </TextSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>


版权声明:本文为caih2000原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。