Catalyst / admin/Strike 14.8 GB / 57.8 GB 40.0 GB free
Help Sign in

admin / Strike

public

Web-Based UK Cyber Compliance Tool with Reporting

Code Issues Pull requests Pipelines Packages Security Insights Wiki Settings
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