# STEP 04 – Provide Redis runtime for SwissOID sessions Added a Redis service to biblio-stats-graphql’s docker compose files so swissoid-back’s session store has a local endpoint, and wired the required environment variables through the containers. ## docker-compose.dev.yml ```yaml 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 ```yaml 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.