services:

{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}

  application:
    image: "friendica:{{applications.friendica.version}}"
    {% include 'roles/docker-compose/templates/services/base.yml.j2' %}
    volumes:
      - data:/var/www/html
    ports:
      - "127.0.0.1:{{ports.localhost.http[application_id]}}:80"
    healthcheck:
      # This health check ensures the test email is sent only once to prevent 
      # hitting SMTP rate limits due to multiple health check executions.
      # The logic checks for a temporary file (/tmp/email_sent) to determine 
      # if the email has already been sent. If the file exists, the email 
      # is skipped, but the health check continues by verifying the HTTP service.
      # Refer to the conversation with ChatGPT (https://chatgpt.com/share/67898c3f-2c1c-800f-861c-47dcbe109135) 
      # on January 16, 2025, for the background behind this complexity.
      test:
        [
          "CMD-SHELL",
          "(if [ ! -f /tmp/email_sent ]; then echo 'Subject: testmessage from {{domains[application_id]}}\n\nSUCCESSFULL' | msmtp -t {{test_email}} && touch /tmp/email_sent; fi && curl -f http://127.0.0.1:80) || exit 1"
        ]
      interval: 1m
      timeout: 10s
      retries: 3
{% include 'templates/docker/container/networks.yml.j2' %}
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}

{% include 'templates/docker/compose/volumes.yml.j2' %}
  data:

{% include 'templates/docker/compose/networks.yml.j2' %}