services: badblocks-personal-site: image: badblocks-personal-site:latest restart: always container_name: badblocks-personal-site volumes: - ./db:/db environment: ANDROID_SMS_GATEWAY_IP: ${ANDROID_SMS_GATEWAY_IP:?ANDROID_SMS_GATEWAY_IP is required} ANDROID_SMS_GATEWAY_URL: ${ANDROID_SMS_GATEWAY_URL:? ANDROID_SMS_GATEWAY_URL is required} ANDROID_SMS_GATEWAY_LOGIN: ${ANDROID_SMS_GATEWAY_LOGIN:? ANDROID_SMS_GATEWAY_LOGIN is required} ANDROID_SMS_GATEWAY_PASSWORD: ${ANDROID_SMS_GATEWAY_PASSWORD:?ANDROID_SMS_GATEWAY_PASSWORD is required} ANDROID_SMS_GATEWAY_RECIPIENT_PHONE: ${ANDROID_SMS_GATEWAY_RECIPIENT_PHONE:? ANDROID_SMS_GATEWAY_RECIPIENT_PHONE is required} OTP_SUPER_SECRET_SALT: ${OTP_SUPER_SECRET_SALT:?OTP_SUPER_SECRET_SALT is required} healthcheck: test: [ "CMD", "node", "-e", "fetch('http://localhost:4321/health').then(r=>process.exit(r.ok?0:1))", ] interval: 30s timeout: 15s retries: 3 start_period: 120s cap_drop: [ALL] security_opt: [no-new-privileges:true] read_only: true tmpfs: [/tmp] networks: default: name: proxynet external: true