geoserver-cloud/compose/compose.yml
Gabriel Roldan 47ff586e2b
Consolidate ImageMosaic acceptance tests
- Add comprehensive ImageMosaic test coverage: direct directory, manual granules,
  empty store workflows, and XML-based store creation
- Fix file path handling: use direct paths instead of file:// URLs for local files
- Update documentation to mention shared mount volume at /mnt/geoserver_data
- Add version testing examples (TAG=2.27.1.0, TAG=2.26.2.0) to README

Tests pass with datadir backend but show limitations with pgconfig backend.
Provides comprehensive test coverage for realistic ImageMosaic workflows.
2025-07-12 00:50:00 -03:00

186 lines
5.1 KiB
YAML

volumes:
# geowebcache tiles shared volume
geowebcache_data:
# geoserver data files shared volume (not datadir, data)
geoserver_data:
include:
- ./infra.yml
x-gs-dependencies: &gs-dependencies
rabbitmq:
condition: service_healthy
required: true
discovery:
condition: service_healthy
required: true
acl:
condition: service_healthy
required: true
postgis:
condition: service_started
required: true
init-test-data:
condition: service_completed_successfully
required: true
services:
init-test-data:
image: alpine:3.18.4
user: root
volumes:
- geoserver_data:/mnt/geoserver_data
- geowebcache_data:/mnt/geowebcache_data
- ./sampledata.tgz:/tmp/sampledata.tgz
command: sh -c "chown -R ${GS_USER} /mnt/geoserver_data /mnt/geowebcache_data && cd /mnt/geoserver_data && if [ ! -d sampledata ]; then tar xvzf /tmp/sampledata.tgz && chown -R ${GS_USER} sampledata; fi"
acl:
image: ${ACL_REPOSITORY}/geoserver-acl:${ACL_TAG}
environment:
# Override default values in the container's /etc/geoserver/acl-service.yml
- PG_HOST=acldb
- PG_PORT=5432
- PG_DB=acl
- PG_SCHEMA=acl
- PG_USERNAME=acl
- PG_PASSWORD=acls3cr3t
- 'ACL_USERS_ADMIN_PASSWORD={noop}s3cr3t'
- 'ACL_USERS_GEOSERVER_PASSWORD={noop}s3cr3t'
- GEOSERVER_BUS_ENABLED=true
- RABBITMQ_HOST=rabbitmq
- RABBITMQ_PORT=5672
- RABBITMQ_USER=guest
- RABBITMQ_PASSWORD=guest
#- RABBITMQ_VHOST=""
#- SPRING_PROFILES_ACTIVE=logging_debug,logging_debug_events
depends_on:
acldb:
condition: service_started
required: true
rabbitmq:
condition: service_healthy
required: true
deploy:
resources:
limits:
cpus: '4.0'
memory: 2G
# Spring Cloud Config service, provides centralized configuration to all
# microservices. Being a Discovery First Bootstrap configuration, it'll
# register itself with the Eureka discovery service and can be scaled
config:
image: ${REPOSITORY}/geoserver-cloud-config:${TAG}
user: ${GS_USER}
environment:
JAVA_OPTS: "${JAVA_OPTS_DEFAULT}"
SPRING_PROFILES_ACTIVE: "${CONFIG_SERVER_DEFAULT_PROFILES}"
# restart: unless-stopped
volumes:
# override with the local copy to test config changes during development
- $PWD/../config:/etc/geoserver:ro
ports:
# not needed in production, exposed for local development
- 8888:8080
deploy:
resources:
limits:
cpus: '2.0'
memory: 256M
# Eureka service discovery. This is a Discovery First Bootstrap configuration.
# The discovery service is the only fixed entry point.
# Browse to http://localhost:8761 to check all services are registered.
discovery:
image: ${REPOSITORY}/geoserver-cloud-discovery:${TAG}
user: ${GS_USER}
environment:
JAVA_OPTS: "${JAVA_OPTS_DEFAULT}"
SPRING_PROFILES_ACTIVE: "${DISCOVERY_SERVER_DEFAULT_PROFILES}"
ports:
- 8761:8761 # for development, so services can be run from localhost and find the discovery service running on docker
restart: unless-stopped
depends_on:
- config
deploy:
resources:
limits:
cpus: '2.0'
memory: 512M
# Application facade, provides a single entry point routing to all
# microservices (e.g. http://localhost:9090/geoserver/wms, http://localhost:9090/geoserver/wfs, etc)
gateway:
image: ${REPOSITORY}/geoserver-cloud-gateway:${TAG}
user: ${GS_USER}
depends_on:
discovery:
condition: service_healthy
environment:
JAVA_OPTS: "${JAVA_OPTS_DEFAULT}"
# eat our own dogfood and set a base path
GEOSERVER_BASE_PATH: ${GEOSERVER_BASE_PATH}
SPRING_PROFILES_ACTIVE: "${GATEWAY_DEFAULT_PROFILES}"
ports:
- ${GATEWAY_PORT}:8080
deploy:
resources:
limits:
cpus: '4.0'
memory: 2G
wfs:
extends:
file: templates.yml
service: gstemplate
image: ${REPOSITORY}/geoserver-cloud-wfs:${TAG}
depends_on: *gs-dependencies
wms:
image: ${REPOSITORY}/geoserver-cloud-wms:${TAG}
extends:
file: templates.yml
service: gstemplate
depends_on: *gs-dependencies
wcs:
extends:
file: templates.yml
service: gstemplate
image: ${REPOSITORY}/geoserver-cloud-wcs:${TAG}
depends_on: *gs-dependencies
wps:
extends:
file: templates.yml
service: gstemplate
image: ${REPOSITORY}/geoserver-cloud-wps:${TAG}
depends_on: *gs-dependencies
gwc:
extends:
file: templates.yml
service: gstemplate
image: ${REPOSITORY}/geoserver-cloud-gwc:${TAG}
depends_on: *gs-dependencies
deploy:
resources:
limits:
cpus: '4.0'
memory: 2G
rest:
extends:
file: templates.yml
service: gstemplate
image: ${REPOSITORY}/geoserver-cloud-rest:${TAG}
depends_on: *gs-dependencies
webui:
extends:
file: templates.yml
service: gstemplate
image: ${REPOSITORY}/geoserver-cloud-webui:${TAG}
depends_on: *gs-dependencies