services: # Frontend development service with hot reloading frontend: build: context: ./frontend dockerfile: Dockerfile.dev restart: unless-stopped ports: - "3000:3000" depends_on: - mongodb environment: - NODE_ENV=development - NEXT_PUBLIC_API_URL=http://localhost:4000/api volumes: - ./frontend/src:/app/src:rw - ./frontend/public:/app/public:rw - ./frontend/package.json:/app/package.json:rw - ./frontend/package-lock.json:/app/package-lock.json:rw - ./frontend/next.config.js:/app/next.config.js:rw - ./frontend/tailwind.config.js:/app/tailwind.config.js:rw - ./frontend/postcss.config.js:/app/postcss.config.js:rw - ./frontend/tsconfig.json:/app/tsconfig.json:rw - /app/node_modules - /app/.next networks: - app-network command: npm run dev # Backend development service with hot reloading backend: build: context: ./backend dockerfile: Dockerfile.dev restart: unless-stopped ports: - "4000:4000" depends_on: - mongodb environment: - NODE_ENV=development - MONGODB_URI=mongodb://admin:admin@mongodb:27017/ocd_db?authSource=ocd_db - MONGO_HOST=mongodb - MONGO_PORT=27017 - MONGO_DB=ocd_db - MONGO_USER=admin - MONGO_PASSWORD=admin - PORT=4000 volumes: - ./backend/src:/app/src:rw - ./backend/package.json:/app/package.json:rw - ./backend/package-lock.json:/app/package-lock.json:rw - ./backend/tsconfig.json:/app/tsconfig.json:rw - ./backend/uploads:/app/uploads:rw - /app/node_modules - /app/dist networks: - app-network command: npm run dev # MongoDB service for development mongodb: image: mongo:7.0 restart: unless-stopped ports: - "27017:27017" volumes: - mongo-dev-data:/data/db:rw - ./mongo-init:/docker-entrypoint-initdb.d:ro networks: - app-network environment: - MONGO_INITDB_DATABASE=ocd-website healthcheck: test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017 --quiet interval: 30s timeout: 10s retries: 3 # Networks networks: app-network: driver: bridge # Volumes volumes: mongo-dev-data: name: ocd-mongo-dev-data