Skip to content

application.yml Reference

Source builds only

This page is for users who build floci-gcp from source or mount a custom application.yml into the container. If you run the published Docker image, you don't need this file — all settings are configured through FLOCI_GCP_* environment variables. See the Environment Variables Reference for the complete list.

All settings can be provided as YAML (in src/main/resources/application.yml) or overridden via environment variables using the FLOCI_GCP_ prefix with dots and dashes replaced by underscores.

URL Configuration

floci-gcp generates absolute URLs for certain response fields (GCS object URLs, pre-signed URLs). Two settings control the hostname embedded in those URLs:

Setting Env variable Default Description
floci-gcp.base-url FLOCI_GCP_BASE_URL http://localhost:4578 Full base URL used to build response URLs
floci-gcp.hostname FLOCI_GCP_HOSTNAME (none) Override only the hostname in base-url. Useful in Docker Compose where localhost is unreachable from other containers

When floci-gcp.hostname is set it replaces just the host portion of base-url, leaving the scheme and port unchanged. Setting FLOCI_GCP_HOSTNAME: floci-gcp is equivalent to changing base-url from http://localhost:4578 to http://floci-gcp:4578.

Example — Docker Compose multi-container setup:

environment:
  FLOCI_GCP_HOSTNAME: floci-gcp   # matches the compose service name
  FLOCI_GCP_BASE_URL: http://floci-gcp:4578

See Docker Compose — Multi-container networking for a full example.

Full Reference

The block below mirrors src/main/resources/application.yml.

floci-gcp:
  port: 4578
  base-url: "http://localhost:4578"  # Used to build GCS object URLs and pre-signed URLs
  # hostname: ""                     # When set, overrides the host in base-url for multi-container Docker
  default-project-id: floci-local

  storage:
    mode: memory                      # memory | persistent | hybrid | wal
    persistent-path: ./data
    wal:
      compaction-interval-ms: 30000

  dns:
    # Extra hostname suffixes resolved to floci-gcp's container IP by the embedded DNS server.
    # Via env var (comma-separated): FLOCI_GCP_DNS_EXTRA_SUFFIXES=custom.internal,other.domain
    # extra-suffixes:
    #   - custom.internal

  docker:
    log-max-size: "10m"
    log-max-file: "3"
    docker-host: unix:///var/run/docker.sock
    docker-config-path: ""

  services:
    gcs:
      enabled: true

    pubsub:
      enabled: true

    firestore:
      enabled: true

    datastore:
      enabled: true

    secretmanager:
      enabled: true

    iam:
      enabled: true

Disabling Services

Set enabled: false for any service you don't need:

floci-gcp:
  services:
    datastore:
      enabled: false
    iam:
      enabled: false

Via environment variable:

FLOCI_GCP_SERVICES_DATASTORE_ENABLED=false
FLOCI_GCP_SERVICES_IAM_ENABLED=false

Logging

floci-gcp uses standard Quarkus logging. The default effective level is INFO. Services log operation-level events at DEBUG and full request/response payloads at TRACE.

Enable TRACE for a service via environment variables:

# Pub/Sub: log publish/pull bodies
QUARKUS_LOG_CATEGORY__IO_FLOCI_GCP_SERVICES_PUBSUB__LEVEL=TRACE

# Firestore: log read/write operations
QUARKUS_LOG_CATEGORY__IO_FLOCI_GCP_SERVICES_FIRESTORE__LEVEL=TRACE

Or in application.yml:

quarkus:
  log:
    category:
      "io.floci.gcp.services.pubsub":
        level: TRACE
      "io.floci.gcp.services.firestore":
        level: TRACE