Genesis
This commit is contained in:
commit
813e203e35
4 changed files with 62 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
stacklist
|
19
README.md
Normal file
19
README.md
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# Docker Compose Ops (dc-ops)
|
||||||
|
|
||||||
|
`dc-ops` is a shell script designed to operations automate the local building and updating of several Docker services.
|
||||||
|
It aims to simplify continuous delivery (CD) processes and infrastructure management in a Docker environment.
|
||||||
|
|
||||||
|
## How does it work?
|
||||||
|
|
||||||
|
* The script iterates through each line of the `stacklist` file, skipping comments
|
||||||
|
* It fetches the latest changes from the remote git repository and checks if there are new commits
|
||||||
|
* If there is a change it pulls the updates from the remote git repository, otherwise the entry is skipped
|
||||||
|
* Following this, it runs `docker compose up` which builds, (re)creates and starts the containers
|
||||||
|
|
||||||
|
The `stacklist` file can list either a directory containing a `docker-compose.yml` file or a precise `docker-compose` file.
|
||||||
|
(see `stacklist.example`)
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
1. Ensure that your 'stacklist' file is up-to-date
|
||||||
|
2. Run the script manually or create a crontab entry
|
38
dc-ops
Executable file
38
dc-ops
Executable file
|
@ -0,0 +1,38 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
## Author: Sebastian Mark
|
||||||
|
## CC-BY-SA (https://creativecommons.org/licenses/by-sa/4.0/deed.de)
|
||||||
|
## for civil use only
|
||||||
|
|
||||||
|
## see README.md
|
||||||
|
|
||||||
|
h1() { echo "* $*"; }
|
||||||
|
msg() { echo "$*"; }
|
||||||
|
|
||||||
|
BASEDIR=$(dirname $0)
|
||||||
|
|
||||||
|
while read -r LINE; do
|
||||||
|
|
||||||
|
grep -q "^[[:space:]]*#" <<<$LINE && continue # skip comments
|
||||||
|
|
||||||
|
STACKDIR=$LINE
|
||||||
|
|
||||||
|
if [[ -f $LINE ]]; then
|
||||||
|
STACKDIR=$(dirname $LINE)
|
||||||
|
COMPOSEFILE=$LINE
|
||||||
|
fi
|
||||||
|
|
||||||
|
h1 "processing $STACKDIR"
|
||||||
|
|
||||||
|
cd $STACKDIR || continue
|
||||||
|
|
||||||
|
git fetch --quiet
|
||||||
|
if [[ $(git rev-parse HEAD) == $(git rev-parse "@{u}") ]]; then
|
||||||
|
msg "no changes - skipping"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
git pull
|
||||||
|
docker compose --file ${COMPOSEFILE:=docker-compose.yml} up --build --detach --remove-orphans
|
||||||
|
|
||||||
|
done <$BASEDIR/stacklist
|
4
stacklist.example
Normal file
4
stacklist.example
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
/path/to/repo
|
||||||
|
/path/to/another-repo
|
||||||
|
/path/with/docker-compose.yml
|
||||||
|
/another-path/with/docker-compose-dev.yml
|
Loading…
Reference in a new issue