A drop-in wrapper for docker-compose
that runs pre/post up and pre/post build scripts.
I frequently have scripts I want to run before/after docker-compose
build/up. This wrapper creates a standard way to run everything by
just wrapping docker-compose
and passing through all arguments. You
use it wherever you normally use docker-compose
. You could even
symlink it as docker-compose in your /usr/local/bin.
The wrapper is smart enough to run your pre-build, even when build is
triggered by an up
command.
The pre-build script runs before Dockerfile
is loaded, so you can
generate your Dockerfile
from your pre-build script.
If you're just pulling an image and not building a new image, the pre/post build script does not run.
If you want to install system-wide but also have edits you make here reflected in that system-wide install:
python3 -m setup develop
Or just install it like you normally would:
python3 -m setup install
Eventually, this will work, but I haven't uploaded it to PyPi yet:
pip3 install docker-wrap
For any service, add an associative array x-wrap
with one or more
keys whose values are associative arrays named build
or use
.
Those associative arrays should contain pre
or post
keys whose
values are paths to scripts to run. See the example below.
docker-wrap
will run any pre
script before it runs your command,
then run any post
script. A future feature will that be if a pre
script prints a valid yaml structure, docker-wrap
will use that
script as the docker-compose.yml
for running the command.
docker-wrap
passes all arguments on to docker-compose
.
Something like this would work:
docker-wrap up foo
version: "3.9"
services:
foo:
x-wrap:
build:
pre: pre-build.sh bar baz
build: bar
The default directory for running pre-build.sh
will be the foo
directory. If you set context, it will be the context.
[X] Pre/post build scripts
[X] Allow pre script to replace Dockerfile
[ ] Allow pre script to replace docker-compose
[X] Pre/post up scripts
[ ] Use wrap instead of x-wrap
[ ] pip installable
Activity is in the GitHub Repo and you can always pop in to chat.opentechstrategies.com as well.
Please run the python qa script on the code before submitting a PR. That script just runs black, isort, mypy, and tests (tho we have no tests yet).
Copyright 2020 James Vasile, published under the terms of AGPLv3 or later.