{% include 'roles/sys-svc-compose/templates/base.yml.j2' %}

  {% set service_name = 'moodle' %}
  {{ service_name }}:
    {{ lookup('compose_only', 'container_name', MOODLE_CONTAINER) }}
    {{ lookup('compose_only', 'pull_policy', 'never') }}
    build:
      context: .
      dockerfile: Dockerfile
      args:
        MOODLE_BASE_IMAGE: "{{ MOODLE_IMAGE }}"
        MOODLE_BASE_TAG: "{{ MOODLE_VERSION }}"
        MOODLE_CODE_DIR: "{{ MOODLE_CODE_DIR }}"
        MOODLE_DATA_DIR: "{{ MOODLE_DATA_DIR }}"
        MOODLE_LOCAL_CACHE_DIR: "{{ MOODLE_LOCAL_CACHE_DIR }}"
        MOODLE_SOURCE_DIR: "{{ MOODLE_SOURCE_DIR }}"
        MOODLE_RUNTIME_USER: "{{ MOODLE_RUNTIME_USER }}"
        MOODLE_OIDC_ENABLED: "{{ MOODLE_OIDC_ENABLED | bool | ternary('1','0') }}"
        MOODLE_OIDC_PLUGIN_RELPATH: "{{ MOODLE_OIDC_PLUGIN_RELPATH }}"
        MOODLE_MCP_ENABLED: "{{ MOODLE_MCP_ENABLED | bool | ternary('1','0') }}"
        MOODLE_MCP_PLUGIN_RELPATH: "{{ MOODLE_MCP_PLUGIN_RELPATH }}"
        MOODLE_MCP_PLUGIN_ARCHIVE_URL: "{{ MOODLE_MCP_PLUGIN_ARCHIVE_URL }}"
        MOODLE_OIDC_PLUGIN_ARCHIVE_URL: "{{ MOODLE_OIDC_PLUGIN_ARCHIVE_URL }}"
        MOODLE_RELEASE: "{{ MOODLE_RELEASE }}"
        MOODLE_TARBALL_URL: "{{ MOODLE_TARBALL_URL }}"
        MOODLE_VERSION_FILE: "{{ MOODLE_VERSION_FILE }}"
        MOODLE_AUTH_SUBDIR: "{{ MOODLE_AUTH_SUBDIR }}"
        MOODLE_WEBSERVICE_SUBDIR: "{{ MOODLE_WEBSERVICE_SUBDIR }}"
    {{ lookup('container_image', application_id, 'moodle') }}
    {% include 'roles/sys-svc-container/templates/base.yml.j2' %}
    {{ lookup('container_volumes', service_name) | indent(4) }}
    {{ lookup('container_healthcheck', service_name) | indent(4) }}
    {{ lookup('container_depends_on', application_id) | indent(4) }}
    {{ lookup('container_extra_hosts', host_alias=true) | indent(4) }}
    {{ lookup('container_networks', provider_self_alias=False) | indent(4) }}

  {% set service_name = 'nginx' %}
  {{ service_name }}:
    {% include 'roles/sys-svc-container/templates/deploy.yml.j2' %}
    {{ lookup('compose_only', 'container_name', MOODLE_NGINX_CONTAINER) }}
    {{ lookup('container_image', application_id, 'nginx') }}
    {{ lookup('depends_on', {'moodle': 'service_healthy'}) }}
    {{ lookup('container_ports', ['moodle', 'http', DOCKER_BIND_HOST]) | indent(4) }}
    {{ lookup('container_volumes', service_name) | indent(4) }}
    {{ lookup('compose_restart') }}
    {{ lookup('container_networks') | indent(4) }}

  {% set service_name = 'cron' %}
  {{ service_name }}:
    {% include 'roles/sys-svc-container/templates/deploy.yml.j2' %}
    {{ lookup('compose_only', 'container_name', MOODLE_CRON_CONTAINER) }}
    {{ lookup('container_image', application_id, 'cron', version=MOODLE_VERSION) }}
    {{ lookup('compose_only', 'pull_policy', 'never') }}
    {{ lookup('depends_on', {'moodle': 'service_healthy'}) }}
    {{ lookup('container_volumes', service_name) | indent(4) }}
    env_file:
      - .env/env
    entrypoint: ["{{ MOODLE_ENTRYPOINT_PATH }}"]
    command:
      - bash
      - -c
      - |
        while true; do
          php {{ MOODLE_CLI_DIR }}/cron.php >/proc/1/fd/1 2>/proc/1/fd/2 || true
          sleep 60
        done
    {{ lookup('compose_restart') }}
    {{ lookup('container_extra_hosts', host_alias=true) | indent(4) }}
    {{ lookup('container_networks', provider_self_alias=False) | indent(4) }}

{{ lookup('compose_volumes') }}
{{ lookup('compose_networks') }}
