a poor man's gitops
Sebastian Mark
b4ac46f925
- replace direct git fetch call with origin.fetch method for better error handling
- use fetch result to check for new commits instead of comparing HEAD with active branch
🤖
|
||
---|---|---|
lib | ||
.gitignore | ||
config.yml.example | ||
dc-ops | ||
README.md | ||
requirements.txt |
Docker Compose GitOps (dc-ops)
dc-ops
is a simple python script that automates the update and deployment of multiple Docker Compose applications.
How does it work?
It reads a list of git repositories from a YAML configuration file (config.yml
), pulls the latest changes for each repo, and runs docker compose up
for each specified docker-compose.yml
file.
Features
- Automatically checks for updates in git repositories
- Supports multiple Docker Compose files per repository
- Can be configured to skip certain repositories
Requirements
See requirements.txt
Usage
- Install the required Python packages:
pip install -r requirements.txt
- Adapt
config.yml.example
to your needs and save it asconfig.yml
- Run
dc-ops
from the shell or from a cron job
Parameters
See dc-ops --help
Configuration Options
self-update
: (optional) update this script on startup. Defaults tofalse
.loglevel
: (optional) define loglevel. Defaults to "INFO" if not set.compose-opts
: (optional) define additional parameters todocker compose up -d
.stacks
: an array containing details for each repository. Each element is a dictionary containing the following keys:dir
: the directory of the repository on your local machine.compose-files
: (optional) array of paths (relative todir
) to docker-compose files. Uses["docker-compose.yml"]
by default if not set.enabled
: (optional)false
if this repository should be skipped. Defaults totrue
if not set.pre
: (optional) a command to be run beforedocker-compose up
, executed indir
.post
: (optional) a command to be run afterdocker-compose up
, executed indir
.
Detailed process
For each enabled stack in the config file, the following process will be executed:
- Checking directory existence
- Fetching latest changes from remote repository
- If there is a new commit, it will pull the changes
- Running Docker Compose with the defined or default compose-file(s)