services: dawarich_redis: image: redis:7.4-alpine container_name: dawarich_redis command: redis-server volumes: - dawarich_redis_data:/var/shared/redis restart: always healthcheck: test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ] interval: 10s retries: 5 start_period: 30s timeout: 10s dawarich_db: image: postgres:17-alpine shm_size: 1G container_name: dawarich_db volumes: - dawarich_db_data:/var/lib/postgresql/data environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: {{ dawarich_db_password }} POSTGRES_DB: dawarich_production restart: always healthcheck: test: [ "CMD", "pg_isready", "-U", "postgres" ] interval: 10s retries: 5 start_period: 30s timeout: 10s dawarich_app: image: freikin/dawarich:latest container_name: dawarich_app volumes: - dawarich_public:/var/app/public - dawarich_watched:/var/app/tmp/imports/watched stdin_open: true tty: true entrypoint: web-entrypoint.sh command: ['bin/rails', 'server', '-p', '3000', '-b', '::'] restart: on-failure environment: RAILS_ENV: production REDIS_URL: redis://dawarich_redis:6379/0 DATABASE_HOST: dawarich_db DATABASE_PORT: 5432 DATABASE_USERNAME: postgres DATABASE_PASSWORD: {{ dawarich_db_password }} DATABASE_NAME: dawarich_production MIN_MINUTES_SPENT_IN_CITY: 60 APPLICATION_HOSTS: loclog.thesatelliteoflove.com,localhost,::1,127.0.0.1 TIME_ZONE: America/Denver APPLICATION_PROTOCOL: http DISTANCE_UNIT: mi PROMETHEUS_EXPORTER_ENABLED: false PROMETHEUS_EXPORTER_HOST: 0.0.0.0 PROMETHEUS_EXPORTER_PORT: 9394 SECRET_KEY_BASE: 1234567890 RAILS_LOG_TO_STDOUT: "true" logging: driver: "json-file" options: max-size: "100m" max-file: "5" healthcheck: test: [ "CMD-SHELL", "wget -qO - http://127.0.0.1:3000/api/v1/health | grep -q '\"status\"\\s*:\\s*\"ok\"'" ] interval: 10s retries: 30 start_period: 30s timeout: 10s depends_on: dawarich_db: condition: service_healthy restart: true dawarich_redis: condition: service_healthy restart: true deploy: resources: limits: cpus: '0.50' # Limit CPU usage to 50% of one core memory: '2G' # Limit memory usage to 2GB dawarich_sidekiq: image: freikin/dawarich:latest container_name: dawarich_sidekiq volumes: - dawarich_public:/var/app/public - dawarich_watched:/var/app/tmp/imports/watched stdin_open: true tty: true entrypoint: sidekiq-entrypoint.sh command: ['bundle', 'exec', 'sidekiq'] restart: on-failure environment: RAILS_ENV: production REDIS_URL: redis://dawarich_redis:6379/0 DATABASE_HOST: dawarich_db DATABASE_PORT: 5432 DATABASE_USERNAME: postgres DATABASE_PASSWORD: {{ dawarich_db_password }} DATABASE_NAME: dawarich_production APPLICATION_HOSTS: loclog.thesatelliteoflove.com,localhost,::1,127.0.0.1 BACKGROUND_PROCESSING_CONCURRENCY: 10 APPLICATION_PROTOCOL: http DISTANCE_UNIT: mi PROMETHEUS_EXPORTER_ENABLED: false PROMETHEUS_EXPORTER_HOST: dawarich_app PROMETHEUS_EXPORTER_PORT: 9394 SECRET_KEY_BASE: 1234567890 RAILS_LOG_TO_STDOUT: "true" logging: driver: "json-file" options: max-size: "100m" max-file: "5" healthcheck: test: [ "CMD-SHELL", "bundle exec sidekiqmon processes | grep $${HOSTNAME}" ] interval: 10s retries: 30 start_period: 30s timeout: 10s depends_on: dawarich_db: condition: service_healthy restart: true dawarich_redis: condition: service_healthy restart: true dawarich_app: condition: service_healthy restart: true deploy: resources: limits: cpus: '0.50' # Limit CPU usage to 50% of one core memory: '2G' # Limit memory usage to 2GB volumes: dawarich_db_data: dawarich_redis_data: dawarich_public: dawarich_watched: networks: default: external: true name: lava