version: '3.9' networks: dns_net: driver: bridge services: # For ended simulations mongo: image: mongo container_name: dns-mongo-db environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE} ports: - '27017:27017' networks: - dns_net volumes: - mongodata:/data/db restart: always # For user management and etc postgres: image: postgres:13 container_name: dns-postgres-db volumes: - postgres_data:/var/lib/postgresql/data environment: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} ports: - "${POSTGRES_PORT}:5432" networks: - dns_net restart: always # For web nginx: image: nginx:alpine container_name: dns-nginx ports: - "${NGINX_PORT}:80" volumes: # - ./frontend/geotouchka-web-application/build:/usr/share/nginx/html - ./nginx.conf:/etc/nginx/nginx.conf networks: - dns_net depends_on: - front restart: always # Api server - For kernel communication server: container_name: dns-server build: context: ./src/server dockerfile: Dockerfile env_file: ".env" ports: - "8080:8080" depends_on: - postgres - mongo networks: - dns_net restart: always # Socket hub - For websocket communication hub: container_name: dns-hub build: context: ./src/microservices/hub dockerfile: Dockerfile env_file: ".env" ports: - "10001:10000" depends_on: - nats networks: - dns_net restart: always # Frontend - For web ui front: container_name: dns-ui build: context: ./src/usn-frontend dockerfile: test.Dockerfile env_file: ".env" volumes: - ./src/usn-frontend:/app working_dir: /app command: ["npm", "run", "dev"] ports: - "3000:3000" networks: - dns_net restart: always # math: container_name: dns-math build: context: ./src/microservices/py-simulation dockerfile: Dockerfile env_file: ".env" ports: - "10000:10000" networks: - dns_net restart: always # For messaging volumes: postgres_data: mongodata: driver: local