Docker Auto Restart
This role was implemented to address the classic issue: "Have you tried turning it off and on again?". The problem initially arose with the fetchmail container in Mailu, which fails if only some containers, and not the full docker-compose composition, are restarted.
Overview
This role automates the restart process for all docker-compose instances within a specified directory. It ensures consistent restarts of services while avoiding issues caused by partial restarts.
Features
- Automatically detects and restarts
docker-composeinstances in the given directory. - Uses a Python script to perform service restarts with
docker-compose restart. - Integrates with
systemdfor scheduled or manual execution. - Designed for idempotency and ease of integration.
Requirements
docker-composemust be installed on the target system.- Python 3.x is required to execute the provided script.
- This role depends on the
system-maintenance-lockrole for handling system-wide locking during restarts.
Installation
- Clone or include this role in your Ansible project.
- Define the required variables in your playbook or inventory:
path_administrator_scripts: "/path/to/administrator/scripts/" restart_docker_folder: "/path/to/restart/volumes/" on_calendar_restart_dockers: "daily"
Usage
Include this role in your playbook:
- hosts: all
roles:
- docker-auto-restart
The role will:
- Set up the necessary directories and scripts.
- Configure a
systemdservice to restart docker-compose instances. - Optionally schedule restarts via a systemd timer.
Acknowledgments
This role was developed with the assistance of ChatGPT, including insights and optimizations from this conversation. Special thanks for providing guidance on error handling, Ansible best practices, and Python integration.
Feel free to contribute or provide feedback via the repository issues page.