services: redis: image: redis:8-alpine container_name: notely-redis ports: - "6379:6379" networks: - notely-network healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 mongodb: image: mongo:8.0 container_name: notely-mongodb environment: MONGO_INITDB_DATABASE: notely MONGO_INITDB_ROOT_USERNAME: admin MONGO_INITDB_ROOT_PASSWORD: password ports: - "27017:27017" volumes: - mongodb_data:/data/db - mongodb_config:/data/configdb networks: - notely-network healthcheck: test: mongosh "mongodb://admin:password@localhost:27017/admin?authSource=admin" --quiet --eval "db.adminCommand('ping').ok" interval: 10s timeout: 5s retries: 5 notely: build: context: . dockerfile: ./devops/docker/Dockerfile container_name: notely-app ports: - "${BACKEND_PORT}:${BACKEND_PORT}" environment: MONGODB_URI: ${MONGODB_URI} JWT_SECRET: ${JWT_SECRET} ENCRYPTION_KEY: ${ENCRYPTION_KEY} PORT: ${BACKEND_PORT} FRONTEND_URL: ${FRONTEND_URL} DEFAULT_ADMIN_EMAIL: ${DEFAULT_ADMIN_EMAIL} DEFAULT_ADMIN_USERNAME: ${DEFAULT_ADMIN_USERNAME} DEFAULT_ADMIN_PASSWORD: ${DEFAULT_ADMIN_PASSWORD} REDIS_ADDR: ${REDIS_ADDR} REDIS_PASSWORD: ${REDIS_PASSWORD} REDIS_DB: ${REDIS_DB} SESSION_TTL_HOURS: ${SESSION_TTL_HOURS} depends_on: mongodb: condition: service_healthy redis: condition: service_healthy networks: - notely-network nginx: image: nginx:1.25-alpine container_name: notely-nginx ports: - "${NGINX_HTTP_PORT}:80" - "${NGINX_HTTPS_PORT}:443" volumes: - ./devops/docker/nginx.conf:/etc/nginx/nginx.conf:ro - ./devops/docker/ssl:/etc/nginx/ssl:ro depends_on: - notely networks: - notely-network volumes: mongodb_data: mongodb_config: networks: notely-network: driver: bridge