# this compose file runs Postgres db and exposes it's port to the host machine version: "3.7" networks: traefik-network: name: "traefik-network" mongo-network: name: "mongo-network" services: web-app: image: utility-bills-tracker:1.20.0 networks: - traefik-network - mongo-network volumes: - ./etc/hosts/:/etc/hosts environment: MONGODB_URI: mongodb://root:example@mongo:27017/ GOOGLE_ID: 355397364527-adjrokm6hromcaaar0qfhk050mfr35ou.apps.googleusercontent.com GOOGLE_SECRET: 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 AUTH_SECRET: Gh0jQ35oq6DR8HkLR3heA8EaEDtxYN/xkP6blvukZ0w= HOSTNAME: rezije.app # IP address at which the server will be listening (0.0.0.0 = listen on all addresses) NEXTAUTH_URL: https://rezije.app # URL next-auth will use while redirecting user during authentication (if not set - will use HOSTNAME) PORT: ${PORT:-80} deploy: # u slucaju rušenja kontejnera čekamo 5s i dižemo novi kontejner => ako se i on sruši opet ceka 5s i pokusava ponovno (tako 5 puta) restart_policy: condition: any delay: 5s max_attempts: 0 # u slučaju rušenja containera pokušavaj ga pokrenuti dok ne uspije = BESKONAČNO labels: - traefik.enable=true - traefik.docker.network=traefik-network # mreže preko koje ide komunikacija sa Traefikom - traefik.http.services.web-app.loadbalancer.server.port=80 - traefik.http.routers.web-app.entrypoints=http - traefik.http.routers.web-app.rule=Host(`${FQDN:-rezije.app}`) mongo: image: mongo:4.4.27 environment: MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_PASSWORD: example volumes: - ./mongo-volume:/data/db networks: - mongo-network mongo-express: image: mongo-express environment: ME_CONFIG_MONGODB_ADMINUSERNAME: root ME_CONFIG_MONGODB_ADMINPASSWORD: example ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/ networks: - traefik-network - mongo-network deploy: # u slucaju rušenja kontejnera čekamo 5s i dižemo novi kontejner => ako se i on sruši opet ceka 5s i pokusava ponovno (tako 5 puta) restart_policy: condition: any delay: 5s max_attempts: 0 # u slučaju rušenja containera pokušavaj ga pokrenuti dok ne uspije = BESKONAČNO labels: - traefik.enable=true - traefik.docker.network=traefik-network # mreže preko koje ide komunikacija sa Traefikom - traefik.http.services.mongo-express.loadbalancer.server.port=8081 - traefik.http.routers.mongo-express.entrypoints=http - traefik.http.routers.mongo-express.rule=Host(`mongo.rezije.app`) reverse-proxy: image: traefik:v2.3 command: # Traefik web konzoli se pristupa preko HTTP, a ne HTTPS - --api.insecure=true - --providers.docker # activates the Swarm Mode (instead of standalone Docker). # - kada je `false` neće detektirati containere kada se pokrene sa `docker-compose up` - --providers.docker.swarmMode=true # prikazuj samo containere koji su nakačeni na Traefik - --providers.docker.exposedByDefault=false # "ping" omogućujemo za potrebe healthcheck-a - --ping=true - --ping.entryPoint=traefik #- --accesslog=true #- --log.level=DEBUG - --entryPoints.http.address=:3000 ports: - "3001:3000" - "8080:8080" volumes: # So that Traefik can listen to the Docker events - /var/run/docker.sock:/var/run/docker.sock networks: - traefik-network