services: api: # At the time of writing, rasterio wheels are not available for arm64 arch # so we force the image to be built with linux/amd64 platform: linux/amd64 build: context: . ports: - "8081:80" environment: - UV_PROJECT_ENVIRONMENT=/opt/venv - UV_LINK_MODE=copy # GDAL Config # This option controls the default GDAL raster block cache size. # If its value is small (less than 100000), it is assumed to be measured in megabytes, otherwise in bytes. - GDAL_CACHEMAX=200 - GDAL_DISABLE_READDIR_ON_OPEN=EMPTY_DIR - GDAL_INGESTED_BYTES_AT_OPEN=32768 - GDAL_HTTP_MERGE_CONSECUTIVE_RANGES=YES - GDAL_HTTP_MULTIPLEX=YES - GDAL_HTTP_VERSION=2 # The file can be cached in RAM by setting the configuration option VSI_CACHE to TRUE. # The cache size defaults to 25 MB, but can be modified by setting the configuration option VSI_CACHE_SIZE (in bytes). # Content in that cache is discarded when the file handle is closed. - VSI_CACHE=TRUE - VSI_CACHE_SIZE=536870912 # In addition, a global least-recently-used cache of 16 MB shared among all downloaded content is enabled by default, # and content in it may be reused after a file handle has been closed and reopen, # during the life-time of the process or until VSICurlClearCache() is called. # Starting with GDAL 2.3, the size of this global LRU cache can be modified by # setting the configuration option CPL_VSIL_CURL_CACHE_SIZE (in bytes). - CPL_VSIL_CURL_CACHE_SIZE=200000000 # AWS S3 endpoint config # - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} # - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} # TiTiler STAC API Config - TITILER_OPENEO_API_DEBUG=TRUE - TITILER_OPENEO_STAC_API_URL=https://stac.eoapi.dev - TITILER_OPENEO_STORE_URL=/tmp/services/eoapi.json # Keycloak Config # - TITILER_OPENEO_AUTH_METHOD=oidc # - TITILER_OPENEO_AUTH_OIDC_CLIENT_ID=titiler-openeo # - TITILER_OPENEO_AUTH_OIDC_WK_URL=http://keycloak:8080/realms/master/.well-known/openid-configuration # - TITILER_OPENEO_AUTH_OIDC_REDIRECT_URL=http://localhost:8080/ # - TITILER_OPENEO_AUTH_OIDC_SCOPES=openid profile email # - TITILER_OPENEO_AUTH_OIDC_NAME_CLAIM=preferred_username env_file: - path: .env required: false # command: ["uvicorn", "titiler.openeo.main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "4"] volumes: - ./services:/tmp/services openeo: platform: linux/amd64 image: mundialis/openeo-web-editor:latest ports: - "8080:80" env_file: - path: .env required: false keycloak_db: image: postgres:15-alpine environment: POSTGRES_DB: keycloak POSTGRES_USER: keycloak POSTGRES_PASSWORD: keycloak volumes: - keycloak_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U keycloak"] interval: 10s timeout: 5s retries: 5 ports: - "5432:5432" keycloak: image: quay.io/keycloak/keycloak:22.0 environment: KC_DB: postgres KC_DB_URL: jdbc:postgresql://keycloak_db:5432/keycloak KC_DB_USERNAME: keycloak KC_DB_PASSWORD: keycloak KEYCLOAK_ADMIN: admin KEYCLOAK_ADMIN_PASSWORD: admin KC_HOSTNAME: localhost KC_HOSTNAME_PORT: 8082 ports: - "8082:8080" depends_on: keycloak_db: condition: service_healthy command: start-dev healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/health/ready"] interval: 30s timeout: 10s retries: 3 volumes: keycloak_data: