admin / Strike
publicWeb-Based UK Cyber Compliance Tool with Reporting
Strike / strikexi-v2 / docker-compose.yml
2012 B · main
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | services: db: image: postgres:16-alpine container_name: strikexi-v2-db restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER:-strikexi} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-change_me_in_prod} POSTGRES_DB: ${POSTGRES_DB:-strikexi} volumes: # Persistent named volume: survives reboots / docker compose down - strikexi_v2_pgdata:/var/lib/postgresql/data # Schema + seed applied automatically on first init - ./db/init:/docker-entrypoint-initdb.d:ro healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-strikexi} -d ${POSTGRES_DB:-strikexi}"] interval: 5s timeout: 5s retries: 10 networks: - strikexi_v2_net backend: build: context: ./backend container_name: strikexi-v2-backend restart: unless-stopped depends_on: db: condition: service_healthy environment: DATABASE_URL: postgresql+psycopg://${POSTGRES_USER:-strikexi}:${POSTGRES_PASSWORD:-change_me_in_prod}@db:5432/${POSTGRES_DB:-strikexi} SECRET_KEY: ${SECRET_KEY:-please-generate-a-long-random-secret} ACCESS_TOKEN_EXPIRE_MINUTES: ${ACCESS_TOKEN_EXPIRE_MINUTES:-120} ADMIN_USERNAME: ${ADMIN_USERNAME:-admin} ADMIN_PASSWORD: ${ADMIN_PASSWORD:-Admin!2345} CORS_ORIGINS: ${CORS_ORIGINS:-http://localhost:8081} volumes: # Persist generated PDF reports across reboots - strikexi_v2_reports:/app/reports networks: - strikexi_v2_net frontend: image: nginx:1.27-alpine container_name: strikexi-v2-frontend restart: unless-stopped depends_on: - backend ports: # V2 published on 8081 so it can run alongside V1 (8080) - "8081:80" volumes: - ./frontend:/usr/share/nginx/html:ro - ./frontend/nginx.conf:/etc/nginx/conf.d/default.conf:ro networks: - strikexi_v2_net volumes: strikexi_v2_pgdata: strikexi_v2_reports: networks: strikexi_v2_net: driver: bridge |