You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.5 KiB

STEP 04 Provide Redis runtime for SwissOID sessions

Added a Redis service to biblio-stats-graphqls docker compose files so swissoid-backs session store has a local endpoint, and wired the required environment variables through the containers.

docker-compose.dev.yml

services:
  redis:
    image: redis:7-alpine
    container_name: "${APP_DIRNAME}_redis"
    command: ["redis-server", "--save", "", "--appendonly", "no"]
    restart: always

  garphql-server-stats:
    environment:
      LOGGER_DEBUG: "${LOGGER_DEBUG}"
      SWISSOID_CLIENT_ID: "${SWISSOID_CLIENT_ID}"
      SWISSOID_ISSUER: "${SWISSOID_ISSUER}"
      SWISSOID_JWKS_URI: "${SWISSOID_JWKS_URI}"
      SWISSOID_TOKEN_ENDPOINT: "${SWISSOID_TOKEN_ENDPOINT}"
      SWISSOID_AUTHORIZE_ENDPOINT: "${SWISSOID_AUTHORIZE_ENDPOINT}"
      OIDC_REDIRECT_BASE_URL: "${OIDC_REDIRECT_BASE_URL}"
      RP_FRONTEND_URL: "${RP_FRONTEND_URL}"
      RP_COOKIE_DOMAIN: "${RP_COOKIE_DOMAIN}"
      SESSION_COOKIE_NAME: "${SESSION_COOKIE_NAME}"
      REFRESH_COOKIE_NAME: "${REFRESH_COOKIE_NAME}"
      SESSION_SECRET: "${SESSION_SECRET}"
      STATE_SIGNING_SECRET: "${STATE_SIGNING_SECRET}"
      SESSION_TTL: "${SESSION_TTL}"
      REFRESH_TTL: "${REFRESH_TTL}"
      REDIS_URL: "${REDIS_URL}"
    depends_on:
      - "${DB_HOST}"
      - redis

docker-compose.yml

services:
  redis:
    image: redis:7-alpine
    container_name: "${REVERSE_DOMAIN}_redis"
    command: ["redis-server", "--save", "", "--appendonly", "no"]
    restart: always
    networks:
      - app_network

  biblio-stats-graphql:
    environment:
      SWISSOID_CLIENT_ID: "${SWISSOID_CLIENT_ID}"
      SWISSOID_ISSUER: "${SWISSOID_ISSUER}"
      SWISSOID_JWKS_URI: "${SWISSOID_JWKS_URI}"
      SWISSOID_TOKEN_ENDPOINT: "${SWISSOID_TOKEN_ENDPOINT}"
      SWISSOID_AUTHORIZE_ENDPOINT: "${SWISSOID_AUTHORIZE_ENDPOINT}"
      OIDC_REDIRECT_BASE_URL: "${OIDC_REDIRECT_BASE_URL}"
      RP_FRONTEND_URL: "${RP_FRONTEND_URL}"
      RP_COOKIE_DOMAIN: "${RP_COOKIE_DOMAIN}"
      SESSION_COOKIE_NAME: "${SESSION_COOKIE_NAME}"
      REFRESH_COOKIE_NAME: "${REFRESH_COOKIE_NAME}"
      SESSION_SECRET: "${SESSION_SECRET}"
      STATE_SIGNING_SECRET: "${STATE_SIGNING_SECRET}"
      SESSION_TTL: "${SESSION_TTL}"
      REFRESH_TTL: "${REFRESH_TTL}"
      REDIS_URL: "${REDIS_URL}"
    depends_on:
      - "${DB_HOST}"
      - redis

This ensures local and production stacks both ship with Redis so swissoid-back can persist sessions without additional manual setup.