name: ticktalk services: db: container_name: mctf-ticktalk-db image: postgres:17.2 restart: always environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} PGDATA: /var/lib/postgresql/data/pgdata POSTGRES_MULTIPLE_USERS: "yes" command: | postgres -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all volumes: - ticktalk-postgres-data:/var/lib/postgresql/data/pgdata healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] interval: 30s timeout: 10s retries: 5 tty: true networks: - ticktalk-network backend: container_name: mctf-ticktalk-backend restart: unless-stopped ports: - "2228:2228" environment: DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB} RUST_LOG: debug volumes: - ticktalk-kerberos-caches:/tmp build: dockerfile: docker/backend/Dockerfile context: . networks: - ticktalk-network cleaner: container_name: mctf-ticktalk-cleaner build: context: docker/cleaner restart: unless-stopped volumes: - ticktalk-firmwares:/firmware - ticktalk-kerberos-caches:/caches environment: - DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB} networks: - ticktalk-network kdc: build: context: docker/kdc dockerfile: Dockerfile container_name: mctf-ticktalk-kdc ports: - "88:88" environment: - TEAM_TOKEN=${TEAM_TOKEN} - KDC_CONFIG=/app/config.json volumes: - ./docker/kdc/config.json:/app/config.json - ticktalk-kdc-data:/app/data depends_on: - redis restart: unless-stopped logging: driver: "json-file" options: max-size: "10m" max-file: "3" networks: - ticktalk-network redis: image: redis:7-alpine container_name: mctf-ticktalk-kdc-redis command: ["redis-server", "--save", "60", "1", "--appendonly", "yes"] restart: unless-stopped volumes: - ticktalk-redis-data:/data networks: - ticktalk-network networks: ticktalk-network: volumes: ticktalk-kdc-data: ticktalk-redis-data: ticktalk-postgres-data: ticktalk-firmwares: ticktalk-kerberos-caches: