version: "3.8"

services:
#  redis-stack:
#    image: redis/redis-stack:latest
#    container_name: depinder-redis-stack
#    ports:
#      - "6379:6379"
#      - "8001:8001"
#    volumes:
#      - depinder_redis_data:/data
#    networks:
#      - traefiknet
#    labels:
#      #### Labels define the behavior and rules of the traefik proxy for this container ####
#      - "traefik.enable=true" # <== Enable traefik on itself to view dashboard and assign subdomain to view it
#      - "traefik.http.routers.redis.rule=Host(`depinder.redisinsight.localhost`)" # <== Setting the domain for the dashboard
#      - "traefik.http.routers.redis.service=redis" # <== Enabling the api to be a service to access
#      - "traefik.http.services.redis.loadbalancer.server.port=8001" # <== Enabling the api to be a service to access
#      - "traefik.docker.network=traefiknet"
#      - "traefik.http.routers.redis.tls=true"
#      - "traefik.http.routers.redis.tls.certresolver=default"

  mongo:
    image: mongo:latest
    container_name: depinder-mongo
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: secret
    ports:
      - "27018:27017"
    volumes:
      - depinder_mongo_data:/data/db
      - ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js
    networks:
      - traefiknet

  mongo-express:
    image: mongo-express:latest
    container_name: depinder-mongo-express
    restart: unless-stopped
    ports:
      - "8002:8081"
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: secret
      ME_CONFIG_MONGODB_URL: mongodb://root:secret@mongo:27017/
    networks:
      - traefiknet
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.mongo-express.rule=Host(`depinder.mongoexpress.localhost`)"
      - "traefik.http.routers.mongo-express.service=mongo-express"
      - "traefik.http.services.mongo-express.loadbalancer.server.port=8081"
      - "traefik.docker.network=traefiknet"
      - "traefik.http.routers.mongo-express.tls=true"
      - "traefik.http.routers.mongo-express.tls.certresolver=default"
    depends_on:
      - mongo

volumes:
#  depinder_redis_data:
  depinder_mongo_data:

networks:
  traefiknet:
    external: true

