version: '3.8' services: mariadb: image: mariadb:10.5 environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-secret} MYSQL_DATABASE: ${MYSQL_DATABASE:-foodsoft} MYSQL_USER: ${MYSQL_USER:-foodsoft} MYSQL_PASSWORD: ${MYSQL_PASSWORD:-secret} networks: - internal redis: image: redis:6.2-alpine networks: - internal foodsoft: image: ${IMAGE} environment: SECRET_KEY_BASE: ${SECRET_KEY_BASE:-verysecret} MYSQL_USER: ${MYSQL_USER:-foodsoft} MYSQL_PASSWORD: ${MYSQL_PASSWORD:-secret} MYSQL_DATABASE: ${MYSQL_DATABASE:-foodsoft} DATABASE_URL: mysql2://${MYSQL_USER:-foodsoft}:${MYSQL_PASSWORD:-secret}@mariadb/${MYSQL_DATABASE:-foodsoft}?encoding=utf8mb4 REDIS_URL: ${REDIS_URL:-redis://redis:6379} RAILS_FORCE_SSL: ${RAILS_FORCE_SSL:-false} DOMAIN: ${DOMAIN} deploy: replicas: 1 labels: - "traefik.enable=true" - "traefik.http.routers.foodsoft-${REFERENCE}.rule=Host(`${DOMAIN}`)" - "traefik.http.routers.foodsoft-${REFERENCE}.entrypoints=web-secure" - "traefik.http.routers.foodsoft-${REFERENCE}.tls.certresolver=production" - "traefik.http.services.foodsoft-${REFERENCE}.loadbalancer.server.port=3000" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/health"] timeout: 10s retries: 3 interval: 30s start_period: 60s networks: - proxy - internal networks: internal: proxy: external: true