version: "3.8" services: backend: logging: driver: "json-file" options: max-size: "10m" max-file: "3" container_name: imk-backend build: context: ./backend dockerfile: Dockerfile ports: - "3000:3000" environment: - NODE_ENV=production - PORT=3000 - DATABASE_URL=postgresql://postgres:postgres@imk-postgres:5432/postgres?schema=public - FRONTEND_URL=https://www.placebo.mk env_file: - .env deploy: resources: limits: memory: 2G reservations: memory: 512M depends_on: postgres: condition: service_healthy redis: condition: service_started networks: - app_network healthcheck: test: [ "CMD", "wget", "-q", "--spider", "http://localhost:3000/health || exit 1", ] interval: 30s timeout: 10s retries: 3 start_period: 15s restart: always postgres: container_name: imk-postgres image: postgres:14-alpine environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres PGDATA: /var/lib/postgresql/data/pgdata ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 networks: - app_network restart: always redis: container_name: imk-redis image: redis:alpine command: redis-server --appendonly yes ports: - "6379:6379" volumes: - redis_data:/data networks: - app_network healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 3 restart: always networks: app_network: driver: bridge name: app_network volumes: postgres_data: name: imk_postgres_data redis_data: name: imk_redis_data