Finished docker refactoring

This commit is contained in:
2025-07-07 03:48:19 +02:00
parent 38ed1e94e8
commit ca0602a1c8
58 changed files with 252 additions and 160 deletions

View File

@@ -0,0 +1,49 @@
# Role: docker-container
## Description
This Ansible role supplies common Jinja2 snippets for composing Docker services consistently. Rather than repeating the same YAML blocks, you include one or more of the provided templates in your `docker-compose.yml.j2`.
## Overview
The following templates are available under `roles/docker-container/templates/`:
- **base.yml.j2**
Common service settings: `restart`, `env_file`, `logging`.
- **networks.yml.j2**
Conditional network attachments:
- `central_<database_type>` when `central_database` feature is enabled
- `central_ldap` when LDAP feature and network are enabled
- `default`
- **depends_on_dmbs.j2**
Builds a `depends_on:` block automatically:
- If `central_database` is **off**, renders an empty list `depends_on: []`
- Otherwise, includes `database` and/or `redis` with healthcheck conditions
- **healthcheck/**
Four strategies:
- `curl.yml.j2` (HTTP via `curl -f`)
- `wget.yml.j2` (HTTP via `wget --spider`)
- `tcp.yml.j2` (TCP socket test)
- `msmtp_curl.yml.j2` (SMTP first, then HTTP via `curl`; avoids duplicate emails)
Include whichever snippets your service requires to keep your Compose files DRY and maintainable.
## Features
- **Modular templates**
Mix only the blocks you need.
- **Featuredriven logic**
Networks and dependencies adjust automatically based on your `applications` variables.
- **Multiple healthcheck options**
Pick the probe that works best for your containers protocol and requirements.
## Further Resources
- [Docker Compose file reference](https://docs.docker.com/compose/compose-file/)
- [Ansible variable precedence](https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#understanding-variable-precedence)
- [Jinja2 templating guide](https://jinja.palletsprojects.com/)

View File

@@ -0,0 +1,10 @@
{# This template needs to be included in docker-compose.yml containers #}
networks:
{% if applications | is_feature_enabled('central_database',application_id) | bool and database_type is defined %}
central_{{ database_type }}:
{% endif %}
{% if applications[application_id].get('features', {}).get('ldap', false) | bool and applications.ldap.network.docker|bool %}
central_ldap:
{% endif %}
default:
{{ "\n" }}