# # Configures all geoserver services to use a shared data directory as catalog backend. # Run with `docker compose -f compose.yml -f catalog-datadir.yml up -d` # Note the default data directory location is /opt/app/data_directory # To set it to a different path, change the mount point and add the following env variable: GEOSERVER_DATA_DIR: name: gscloud_dev_datadir volumes: data_directory: geowebcache_data: # driver_opts: # type: none # o: bind # device: $PWD/catalog-datadir # Append the shared data directory to the geoserver_volumes anchor x-volume-mounts: &geoserver_volumes - data_directory:/opt/app/data_directory:z x-gs-dependencies: &gs-dependencies init-datadir: condition: service_completed_successfully x-geoserver-env: &geoserver_environment SPRING_PROFILES_ACTIVE: "${GEOSERVER_DEFAULT_PROFILES},datadir" services: init-datadir: image: alpine:3.18.4 user: root command: sh -c "cd /opt/app/data_directory; if [ ! -f global.xml ]; then tar xvzf /tmp/datadir.tgz; fi; chown -R ${GS_USER} /opt/app/data_directory" volumes: - data_directory:/opt/app/data_directory - ./catalog-datadir.tgz:/tmp/datadir.tgz wfs: environment: *geoserver_environment volumes: *geoserver_volumes depends_on: *gs-dependencies wms: environment: *geoserver_environment volumes: *geoserver_volumes depends_on: *gs-dependencies wcs: environment: *geoserver_environment volumes: *geoserver_volumes depends_on: *gs-dependencies wps: environment: *geoserver_environment volumes: *geoserver_volumes depends_on: *gs-dependencies rest: environment: *geoserver_environment volumes: *geoserver_volumes depends_on: *gs-dependencies webui: environment: *geoserver_environment volumes: *geoserver_volumes depends_on: *gs-dependencies gwc: environment: *geoserver_environment volumes: *geoserver_volumes depends_on: *gs-dependencies