version: "3.8" services: # =============================== # MongoDB # =============================== mongo: image: mongo:6.0 container_name: meeting-mongo restart: unless-stopped environment: MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_PASSWORD: example123 volumes: - mongo_data:/data/db networks: - meeting-net # =============================== # Backend # =============================== backend: build: context: ./meeting-backend container_name: meeting-backend restart: unless-stopped env_file: - ./meeting-backend/.env environment: - MONGO_URI=mongodb://root:example123@mongo:27017/meetingDB?authSource=admin - CLIENT_URL=https://bkmeeting.soict.io - PORT=5000 expose: - "5000" depends_on: - mongo networks: - meeting-net # =============================== # Frontend # =============================== frontend: build: context: ./meeting-frontend container_name: meeting-frontend restart: unless-stopped expose: - "80" networks: - meeting-net # =============================== # Nginx Reverse Proxy (HTTPS) # =============================== nginx: image: nginx:stable-alpine container_name: meeting-nginx restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro - ./certs:/etc/letsencrypt/live/bkmeeting.soict.io:ro depends_on: - backend - frontend networks: - meeting-net volumes: mongo_data: networks: meeting-net: driver: bridge