services: ctf-platform: build: . container_name: hipctf ports: - "3001:3000" volumes: # Map the local data directory to the container's DB path - ./data:/app/data # Map the uploads directory for persistent challenge files - ./uploads:/app/uploads environment: - NODE_ENV=production - PORT=3000 restart: unless-stopped # 1. Wait for the permission fix to finish depends_on: fix-permissions: condition: service_completed_successfully # 2. This temporary container runs once, fixes folders, and dies fix-permissions: image: alpine user: root command: sh -c "mkdir -p /app/data /app/uploads && chown -R 1000:1000 /app/data /app/uploads" volumes: - ./data:/app/data - ./uploads:/app/uploads