Files
scoffer/docker-compose.yml

86 lines
1.9 KiB
YAML

version: '3.8'
services:
# MongoDB Database
mongodb:
image: mongo:7.0
container_name: recipe-management-mongodb
restart: unless-stopped
ports:
- "27017:27017"
volumes:
- mongodb_data:/data/db
- ./backend/seedData.js:/docker-entrypoint-initdb.d/01-seedData.js:ro
networks:
- recipe-network
healthcheck:
test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')", "--quiet"]
interval: 30s
timeout: 10s
retries: 5
start_period: 40s
# Backend API Service
backend:
build:
context: ./backend
dockerfile: Dockerfile
container_name: recipe-management-backend
restart: unless-stopped
environment:
- PORT=5000
- MONGODB_HOST=mongodb
- MONGODB_PORT=27017
- MONGODB_DATABASE=recipe-management
- JWT_SECRET=${JWT_SECRET}
ports:
- "5000:5000"
depends_on:
mongodb:
condition: service_healthy
networks:
- recipe-network
volumes:
- ./backend:/app
- /app/node_modules
# Frontend React App
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
container_name: recipe-management-frontend
restart: unless-stopped
ports:
- "3000:80"
depends_on:
- backend
networks:
- recipe-network
environment:
- REACT_APP_API_URL=http://localhost:5000
# Optional: MongoDB Express for database management
mongo-express:
image: mongo-express:1.0.0
container_name: recipe-management-mongo-express
restart: unless-stopped
ports:
- "8081:8081"
environment:
ME_CONFIG_MONGODB_URL: mongodb://mongodb:27017/
ME_CONFIG_BASICAUTH: false
depends_on:
mongodb:
condition: service_healthy
networks:
- recipe-network
volumes:
mongodb_data:
driver: local
networks:
recipe-network:
driver: bridge