deafmissoula-website/docker-compose.yml
friday-bot ef8d281b2b v2: MongoDB backend + /manage dashboard
- Replace Express 4 backend with Express 5 + Mongoose 8 + TypeScript 5.8
- Add MongoDB 8.0 container via docker-compose
- Add JWT auth (jose), argon2 password hashing, zod validation, multer uploads
- Models: BoardMember, Event, GalleryItem, Sponsor, Minute, Member, User
- Full CRUD REST API for all content types
- Seed script to populate MongoDB from hardcoded data
- Wire all frontend components to fetch from API (no JSX changes)
- Add /manage dashboard: login + tabs for Board, Events, Gallery, Sponsors, Minutes, Members
- Uploads volume for persistent file storage across deploys
2026-05-27 16:23:12 -06:00

62 lines
1.3 KiB
YAML

services:
app:
build:
context: .
dockerfile: Dockerfile
args:
CACHEBUST: ${CACHEBUST:-1}
pull_policy: build
restart: unless-stopped
ports:
- "801:801"
environment:
- NODE_ENV=production
- VERSION=2.0
env_file:
- .env
- stack.env
volumes:
- uploads-data:/app/uploads
depends_on:
mongodb:
condition: service_healthy
networks:
- caddy_network
- internal
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:801/api/events"]
interval: 30s
timeout: 10s
retries: 3
mongodb:
image: mongo:8.0
restart: unless-stopped
volumes:
- mongo-data:/data/db
networks:
- internal
env_file:
- stack.env
environment:
- MONGO_INITDB_ROOT_USERNAME=${MONGO_USER}
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_PASSWORD}
- MONGO_INITDB_DATABASE=mcdi
command: ["--auth", "--bind_ip_all"]
healthcheck:
test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017 --quiet
interval: 30s
timeout: 10s
retries: 5
networks:
caddy_network:
external: true
internal:
driver: bridge
volumes:
mongo-data:
name: mcdi-mongo-data
uploads-data:
name: mcdi-uploads-data