# documentation: https://docs.heyform.net/open-source/self-hosting
# slogan: Allows anyone to create engaging conversational forms for surveys, questionnaires, quizzes, and polls. No coding skills required.
# category: productivity
# tags: form, builder, forms, survey, quiz, open source, self-hosted, docker
# logo: svgs/heyform.svg
# port: 8000

services:
  heyform:
    image: heyform/community-edition:latest
    volumes:
      - heyform-assets:/app/static/upload
    depends_on:
      mongo:
        condition: service_healthy
      keydb:
        condition: service_healthy
    environment:
      - SERVICE_URL_HEYFORM_8000
      - APP_HOMEPAGE_URL=${SERVICE_URL_HEYFORM}
      - SESSION_KEY=${SERVICE_BASE64_64_SESSION}
      - FORM_ENCRYPTION_KEY=${SERVICE_BASE64_64_FORM}
      - MONGO_URI=mongodb://mongo:27017/heyform
      - REDIS_HOST=keydb
      - REDIS_PORT=6379
      - REDIS_PASSWORD=${SERVICE_PASSWORD_KEYDB}
    healthcheck:
      test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:8000 || exit 1"]
      interval: 5s
      timeout: 5s
      retries: 3

  mongo:
    image: percona/percona-server-mongodb:latest
    volumes:
      - heyform-mongo-data:/data/db
    healthcheck:
      test: ["CMD-SHELL", "echo 'ok' > /dev/null 2>&1"]
      interval: 5s
      timeout: 5s
      retries: 10
      start_period: 5s

  keydb:
    image: eqalpha/keydb:latest
    command: keydb-server --appendonly yes
    environment:
      - KEYDB_PASSWORD=${SERVICE_PASSWORD_KEYDB}
    volumes:
      - heyform-keydb-data:/data
    healthcheck:
      test: ["CMD-SHELL", "keydb-cli", "--pass", "${SERVICE_PASSWORD_KEYDB}", "ping"]
      interval: 5s
      timeout: 5s
      retries: 10
      start_period: 5s
