# Role: web-app-redis

## Description

This Ansible role provides a Jinja2 snippet to inject a Redis service definition into your Docker Compose setup. It renders a `service.yml.j2` template that defines a `redis` container with sensible defaults.

## Overview

The role’s `service.yml.j2` template includes:

- An Alpine-based Redis image (`redis:alpine`)
- Container naming based on `application_id` (defaults to `redis`)
- Restart policy
 
- Journald logging driver
- A named volume (`redis:/data`) for persistence
- A basic healthcheck using `redis-cli ping`
- Attachment to the default network

Include this snippet in your top-level `docker-compose.yml.j2` where you want Redis to appear.

## Features

- **Configurable `application_id`**  
  Sets container name (`{{ application_id }}-redis`).

- **Restart policy**  
  Controlled by `docker_restart_policy`.

- **Journald logging**  
  Ensures logs are captured by systemd’s journal.

- **Persistent storage**  
  Declares and mounts `redis:/data`.

- **Built-in healthcheck**  
  Uses `redis-cli ping` with configurable intervals and retries.

## Further Resources

- [Official Redis Docker image on Docker Hub](https://hub.docker.com/_/redis)  
- [Ansible Jinja2 documentation](https://docs.ansible.com/ansible/latest/user_guide/playbooks_templating.html)  
- [Docker Compose reference](https://docs.docker.com/compose/compose-file/)  
