|
|
# 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.
|