Patch docker images to fit your purposes and organization requirements
pip install docker-patchAdd your own patch function like this:
import docker_patch
@docker_patch.register_patcher
def patcher_func(container):
print(f'patch container "{container}"')
container.exec_run('/bin/sh -c \'echo "hi from module 1" >> patched.txt\'')You can register multiple patchers, and then use it in one of these options:
docker-patch <IMAGE_NAME> -m <module_name>You can add additional -m <module> as you like and make a patchers chain that work on your image (in order of appearance).
If you would like to import a module that not in your current path or installed in the interpreter libraries, you can add --add-path like this:
# assume my_patcher is in /path/to/my_patcher.py
docker-patch <IMAGE_NAME> -m my_patcher --add-path /path/toThis will add /path/to to sys.path so the patcher can import the my_module
Use it directly from code
import docker
import docker_patch
# assume you registered patchers as shown above
client = docker.DockerClient()
image = client.images.get('some-image')
result_image = docker_patch.patch_image(image)