mirror of
https://github.com/UniversityOfHelsinkiCS/oodikone.git
synced 2026-10-12 19:03:39 +03:00
222 lines
5.8 KiB
YAML
222 lines
5.8 KiB
YAML
name: oodikone
|
|
|
|
x-defaults: &defaults
|
|
restart: unless-stopped
|
|
|
|
x-healthcheck-defaults: &healthcheck-defaults
|
|
interval: 1s
|
|
timeout: 3s
|
|
retries: 30
|
|
|
|
services:
|
|
backend:
|
|
<<: *defaults
|
|
container_name: oodikone-backend
|
|
image: oodikone-backend:staging
|
|
build:
|
|
context: services
|
|
dockerfile: backend/Dockerfile
|
|
depends_on:
|
|
kone-db:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
sis-db:
|
|
condition: service_healthy
|
|
user-db:
|
|
condition: service_healthy
|
|
environment:
|
|
CI: 'true'
|
|
DB_URL_USER: postgres://postgres@user-db:5432/user-db
|
|
DB_URL_KONE: postgres://postgres@kone-db:5432/kone-db
|
|
FRONT_URL: http://localhost:1337
|
|
REDIS: redis
|
|
SECRET_TOKEN: dev
|
|
SIS_DB_URL: postgres://postgres@sis-db:5432/sis-db
|
|
SIS_UPDATER_URL: http://sis-updater-scheduler:8082
|
|
IMPORTER_DB_API_URL: 'https://api-toska.apps.ocp-prod-0.k8s.it.helsinki.fi/importer'
|
|
JAMI_URL: 'http://jami:3003/'
|
|
CRYPT_KEY: 'e16730fce263d5270ba8dcf84d068a32556542455e71331880d6c1c5e4db9b4e'
|
|
ports:
|
|
- 8080:8080
|
|
profiles:
|
|
- oodikone
|
|
healthcheck:
|
|
test: ['CMD', 'curl', '-f', 'http://localhost:8080/health'] # In CI/prod the routing happens at a different level, hence no /api/ needed
|
|
<<: *healthcheck-defaults
|
|
|
|
frontend:
|
|
<<: *defaults
|
|
container_name: oodikone-frontend
|
|
image: oodikone-frontend:staging
|
|
build:
|
|
context: services
|
|
dockerfile: frontend/Dockerfile
|
|
depends_on:
|
|
backend:
|
|
condition: service_healthy
|
|
ports:
|
|
- 3000:3000
|
|
profiles:
|
|
- oodikone
|
|
|
|
kone-db:
|
|
<<: *defaults
|
|
container_name: oodikone-kone-db
|
|
image: registry-toska.ext.ocp-prod-0.k8s.it.helsinki.fi/kone-db
|
|
environment:
|
|
PGDATA: /data
|
|
POSTGRES_DB: kone-db
|
|
POSTGRES_HOST_AUTH_METHOD: trust
|
|
ports:
|
|
- 4321:5432
|
|
healthcheck:
|
|
test: ['CMD-SHELL', 'pg_isready', '-d', 'kone-db']
|
|
<<: *healthcheck-defaults
|
|
|
|
user-db:
|
|
<<: *defaults
|
|
container_name: oodikone-user-db
|
|
image: registry-toska.ext.ocp-prod-0.k8s.it.helsinki.fi/user-db
|
|
environment:
|
|
PGDATA: /data
|
|
POSTGRES_DB: user-db
|
|
POSTGRES_HOST_AUTH_METHOD: trust
|
|
ports:
|
|
- 4320:5432
|
|
healthcheck:
|
|
test: ['CMD-SHELL', 'pg_isready', '-d', 'user-db']
|
|
<<: *healthcheck-defaults
|
|
|
|
redis:
|
|
<<: *defaults
|
|
container_name: oodikone-redis
|
|
image: redis:7.2.6
|
|
command: >
|
|
sh -c 'redis-server --appendonly yes && redis-cli flushall'
|
|
ports:
|
|
- 6379:6379
|
|
healthcheck:
|
|
test: ['CMD-SHELL', 'redis-cli ping | grep PONG']
|
|
<<: *healthcheck-defaults
|
|
|
|
sis-db:
|
|
<<: *defaults
|
|
container_name: oodikone-sis-db
|
|
image: registry-toska.ext.ocp-prod-0.k8s.it.helsinki.fi/sis-db
|
|
environment:
|
|
PGDATA: /data
|
|
POSTGRES_DB: sis-db
|
|
POSTGRES_HOST_AUTH_METHOD: trust
|
|
shm_size: 2gb
|
|
ports:
|
|
- 12345:5432
|
|
healthcheck:
|
|
test: ['CMD-SHELL', 'pg_isready', '-d', 'sis-db']
|
|
<<: *healthcheck-defaults
|
|
|
|
sis-importer-db:
|
|
<<: *defaults
|
|
container_name: oodikone-sis-importer-db
|
|
image: registry-toska.ext.ocp-prod-0.k8s.it.helsinki.fi/sis-importer-db
|
|
profiles:
|
|
- updater
|
|
ports:
|
|
- 12346:5432
|
|
healthcheck:
|
|
test: ['CMD-SHELL', 'pg_isready', '-d', 'sis-importer-db']
|
|
<<: *healthcheck-defaults
|
|
|
|
jami:
|
|
<<: *defaults
|
|
container_name: oodikone-jami
|
|
image: quay.io/toska/jami:production
|
|
environment:
|
|
- npm_config_cache=/tmp
|
|
- PORT=3003
|
|
- NODE_ENV=dev
|
|
- DATABASE_URL=postgres://postgres:postgres@jami-db:5432/postgres
|
|
ports:
|
|
- 3003:3003
|
|
|
|
jami-db:
|
|
<<: *defaults
|
|
container_name: oodikone-jami-db
|
|
image: postgres:15.10
|
|
environment:
|
|
- PGDATA=/data
|
|
- POSTGRES_PASSWORD=postgres
|
|
ports:
|
|
- 5433:5432
|
|
healthcheck:
|
|
test: ['CMD-SHELL', 'pg_isready', '-d', 'postgres']
|
|
<<: *healthcheck-defaults
|
|
|
|
nginx:
|
|
container_name: oodikone-nginx
|
|
image: nginx:latest
|
|
depends_on:
|
|
frontend:
|
|
condition: service_started
|
|
backend:
|
|
condition: service_healthy
|
|
ports:
|
|
- 1337:80
|
|
profiles:
|
|
- oodikone
|
|
volumes:
|
|
- ./nginx.conf:/etc/nginx/nginx.conf
|
|
|
|
# Following services + sis-importer-db are used to run sis-updater-worker when anon sis-db needs to be updated. Could probably also use production version, but this certainly works.
|
|
sis-updater-scheduler:
|
|
<<: *defaults
|
|
container_name: oodikone-updater-scheduler
|
|
build:
|
|
context: updater/sis-updater-scheduler
|
|
depends_on:
|
|
redis:
|
|
condition: service_healthy
|
|
sis-importer-db:
|
|
condition: service_healthy
|
|
environment:
|
|
CI: 'true'
|
|
REDIS_HOST: redis
|
|
SECRET_TOKEN: dev
|
|
SIS_IMPORTER_DATABASE: sis-importer-db
|
|
SIS_IMPORTER_HOST: sis-importer-db
|
|
SIS_IMPORTER_PASSWORD: postgres
|
|
SIS_IMPORTER_USER: postgres
|
|
SCHEDULE_IMMEDIATE: '${SCHEDULE_IMMEDIATE}'
|
|
EXIT_AFTER_IMMEDIATES: '${EXIT_AFTER_IMMEDIATES}'
|
|
ports:
|
|
- 8082:8082
|
|
profiles:
|
|
- updater
|
|
healthcheck:
|
|
test: ['CMD', 'curl', '-f', 'http://localhost:8082/health']
|
|
<<: *healthcheck-defaults
|
|
|
|
sis-updater-worker:
|
|
<<: *defaults
|
|
container_name: oodikone-updater-worker
|
|
build:
|
|
context: updater/sis-updater-worker
|
|
depends_on:
|
|
redis:
|
|
condition: service_healthy
|
|
sis-db:
|
|
condition: service_healthy
|
|
sis-importer-db:
|
|
condition: service_healthy
|
|
environment:
|
|
CI: 'true'
|
|
DB_URL: postgres://postgres@sis-db:5432/sis-db
|
|
REDIS_HOST: redis
|
|
SIS_IMPORTER_DATABASE: sis-importer-db
|
|
SIS_IMPORTER_HOST: sis-importer-db
|
|
SIS_IMPORTER_PASSWORD: postgres
|
|
SIS_IMPORTER_USER: postgres
|
|
SIS_PASSWORD: postgres
|
|
profiles:
|
|
- updater
|