dockercompose

🧩 Syntax:
version: "3.7"
 
volumes:
  api-proxy-config:
  prometheus_data: {}
  grafana-data:
    driver: local
services:
  # node-exporter:
  #   image: quay.io/prometheus/node-exporter:latest
  #   volumes:
  #     - /proc:/host/proc:ro
  #     - /sys:/host/sys:ro
  #     - /:/rootfs:ro
  #     - /:/host:ro,rslave
  #   command: 
  #     - '--path.rootfs=/host'
  #     - '--path.procfs=/host/proc' 
  #     - '--path.sysfs=/host/sys'
  #     - --collector.filesystem.ignored-mount-points
  #     - "^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)"
  #   ports:
  #     - 9100:9100
  # prometheus:
  #   image: prom/prometheus:latest
  #   container_name: prometheus
  #   ports:
  #     - "9090:9090"
  #   volumes:
  #     - /etc/prometheus:/etc/prometheus
  #     - prometheus_data:/prometheus
  #   restart: unless-stopped
  #   command:
  #     - "--config.file=/etc/prometheus/prometheus.yml"
  # grafana:
  #   image: grafana/grafana-oss:latest
  #   container_name: grafana
  #   ports:
  #     - "3000:3000"
  #   volumes:
  #     - grafana-data:/var/lib/grafana
  #   restart: unless-stopped
  # cadvisor:
  #   image: google/cadvisor:latest # latest tag is not updated...
  #                                           # https://github.com/google/cadvisor/issues/3066    
  #                                           # To manual check versions: https://github.com/google/cadvisor/releases      
  #   volumes:
  #     - /:/rootfs:ro
  #     - /var/run:/var/run:ro
  #     - /sys:/sys:ro
  #     - /var/lib/docker/:/var/lib/docker:ro
  #     - /dev/disk/:/dev/disk:ro
  #   devices:
  #     - /dev/kmsg
  #   restart: unless-stopped
  #   # ports:
  #   #   - "3400:3400"
  rabbitmq:
    image: rabbitmq:3.9-management
    ports:
      - 5673:5672
      - 15673:15672
  mongodb:
    image: mongo
    ports:
      - 27017:27017
    volumes: # if persistence required
      - ./local-database:/data/db
  users-ms:
    build:
      context: ./backend/microservices/dgoods-ms-users
      target: development
    volumes:
      - ./backend/microservices/dgoods-ms-users/lib:/usr/app/src/lib
      - ./backend/microservices/DGoods-094895d003e6.json:/usr/app/DGoods-094895d003e6.json
    env_file:
      - ./backend/microservices/dgoods-ms-users/.env.development
    environment:
      - MICROSERVICE_NAME=users
        # requestst to /api/example/** will be proxied to this MS
        #- DEBUG=*
    depends_on:
      - mongodb
      - rabbitmq
  
  analytics-ms:
    build:
      context: ./backend/microservices/dgoods-ms-analytics
      target: development
    volumes:
      - ./backend/microservices/dgoods-ms-analytics/lib:/usr/app/src/lib
      - ./backend/microservices/DGoods-094895d003e6.json:/usr/app/DGoods-094895d003e6.json
    env_file:
      - ./backend/microservices/dgoods-ms-analytics/.env.development
    environment:
      - MICROSERVICE_NAME=analytics
  session-ms:
    build:
      context: ./backend/microservices/dgoods-ms-session
      target: development
    volumes:
      - ./backend/microservices/dgoods-ms-session/lib:/usr/app/src/lib
      - ./backend/microservices/dgoods-0c44823fe0ea.json:/usr/app/dgoods-0c44823fe0ea.json
      - ./backend/microservices/DGoods-094895d003e6.json:/usr/app/DGoods-094895d003e6.json
    env_file:
      - ./backend/microservices/dgoods-ms-session/.env.development
    environment:
      - MICROSERVICE_NAME=session
      - DEBUG=modeso:*
       # requestst to /api/example/** will be proxied to this MS
        #- DEBUG=*
    depends_on:
      - mongodb
      - rabbitmq
      - users-ms
  cart-ms:
    build:
      context: ./backend/microservices/dgoods-ms-cart 
      dockerfile: ./Dockerfile.dev
      target: development
    volumes:
      - ./backend/microservices/dgoods-ms-cart/lib:/usr/app/src/lib
      - ./backend/microservices/dgoods-ms-cart/types:/usr/app/src/types
      - ./backend/microservices/DGoods-094895d003e6.json:/usr/app/DGoods-094895d003e6.json
    env_file:
      - ./backend/microservices/dgoods-ms-cart/.env.development
    environment:
      - MICROSERVICE_NAME=cart
        # requestst to /api/example/** will be proxied to this MS
        #- DEBUG=*
    depends_on:
      - mongodb
      - rabbitmq
  admin-ms:
    build:
      context: ./backend/microservices/dgoods-ms-admin
      target: development
    volumes:
      - ./backend/microservices/dgoods-ms-admin/lib:/usr/app/src/lib
      - ./backend/microservices/DGoods-094895d003e6.json:/usr/app/DGoods-094895d003e6.json
    env_file:
      - ./backend/microservices/dgoods-ms-admin/.env.development
    environment:
      - MICROSERVICE_NAME=admin
        # requestst to /api/example/** will be proxied to this MS
        #- DEBUG=*
    depends_on:
      - mongodb
      - rabbitmq
  products-ms:
    build:
      context: ./backend/microservices/dgoods-ms-products
      dockerfile: ./Dockerfile.dev
      target: development
    volumes:
      - ./backend/microservices/dgoods-ms-products/lib:/usr/app/src/lib
      - ./backend/microservices/dgoods-ms-products/types:/usr/app/src/types
      - ./backend/microservices/DGoods-094895d003e6.json:/usr/app/DGoods-094895d003e6.json
    env_file:
      - ./backend/microservices/dgoods-ms-products/.env.development
    environment:
      - MICROSERVICE_NAME=products
    depends_on:
      - mongodb
      - rabbitmq
    # ports: 
    #   - "9229:9229"
  email-ms:
    build:
      context: ./backend/microservices/dgoods-ms-email
    volumes:
      - ./backend/microservices/dgoods-ms-email/lib:/usr/app/src/lib
      - ./backend/microservices/DGoods-094895d003e6.json:/usr/app/DGoods-094895d003e6.json
    env_file:
      - ./backend/microservices/dgoods-ms-email/.env.development
    environment:
      - MICROSERVICE_NAME=email
    depends_on:
      - mongodb
      - rabbitmq
  localization-ms:
    image: ghcr.io/modesoventures/modeso-ms-localization:master                                                                              
    volumes:
      - ./backend/microservices/dgoods-ms-localization/data:/usr/app/data
      - ./backend/microservices/dgoods-ms-localization/public.key:/usr/app/public.key
      - ./backend/microservices/DGoods-094895d003e6.json:/usr/app/DGoods-094895d003e6.json
      - ~/.config/:/root/.config
    environment:
      - MICROSERVICE_NAME=localization
      #- DEBUG=*
    env_file:
      - ./backend/microservices/dgoods-ms-localization/.env.development
  payment-ms:
    build:
      context: ./backend/microservices/dgoods-ms-payment
    volumes:
      - ./backend/microservices/dgoods-ms-payment/lib:/usr/app/src/lib
      - ./backend/microservices/dgoods-ms-payment/data:/usr/app/data
      - ./backend/microservices/DGoods-094895d003e6.json:/usr/app/DGoods-094895d003e6.json
    environment:
      - MICROSERVICE_NAME=payment
      #- DEBUG=*
    env_file:
      - ./backend/microservices/dgoods-ms-payment/.env.development
 
  api-gateway:
    image: nginx
    container_name: dgoods-api-gateway
    ports:
      - "3000:80"
    volumes:
      - api-proxy-config:/etc/nginx/conf.d
 
  api-proxy-dockergen:
    build: 
      context: ./backend/microservices/modeso-api-gateway
    command: -notify-sighup dgoods-api-gateway -watch /usr/app/nginx.tmpl /etc/nginx/conf.d/default.conf
    volumes:
      - api-proxy-config:/etc/nginx/conf.d
      - /var/run/docker.sock:/tmp/docker.sock:ro
  swagger-ui:
    container_name: swagger
    image: swaggerapi/swagger-ui
    environment:
      URLS: "[{ url: 'doc/cart-api.yaml', name: 'CartMS'},
        { url: 'doc/product-api.yaml', name: 'ProductMs'},
        { url: 'doc/admin-api.yaml', name: 'AdminMs'},
        { url: 'doc/session-api.yaml', name: 'SessionMs'}]"
    volumes:
      - ./doc/:/usr/share/nginx/html/doc
    ports:
      - "8080:8080"