Docker compose to the next level with Jinja2 templating
Project description
Jinja Compose
jinja-compose
is a tool for running docker-compose commands with Jinja2 templating.
Installation
pip install jinja-compose-wrapper
Then ensure your Python bin directory is in your PATH.
Usage
Jinja Compose operates using the same syntax as docker-compose, but with the addition of a template and optional injection file. The typical project setup looks like this:
/project_dir
├── compose.jyml
├── compose.py
└── compose.yaml [generated by jinja-compose]
Where compose.jyml
is a Jinja2 template file, compose.py
is an optional Python file containing variables to be injected into the template, and compose.yaml
is the generated docker-compose file.
Example
In compose.jyml
we define a service called server
, which only runs in production when the is_production
variable is defined and only forwards ports on a certain host.
services:
server:
build:
context: .
image: sid220/apriltag_localisation:latest
environment:
- DAPRILTAG_PRODUCTION={{ MyJinjaComposeInjection.is_production }}
- OPENCV_VIDEOIO_DEBUG=1
{% if MyJinjaComposeInjection.my_static_method() == 'special_host' %}
ports:
- "5000:5000"
{% endif %}
To define the is_production
variable and my_static_method
method, we create a compose.py
file with a class that inherits from JinjaComposeInject
.
from jinja_compose_wrapper.libjinja_compose import JinjaComposeInject
import socket
class MyJinjaComposeInjection(JinjaComposeInject):
is_production = 1
@staticmethod
def my_static_method():
return socket.gethostname()
Once done we can now bring this service up:
jinja_compose up
Or just build the yaml file:
jinja_compose -d echo
Full Usage Documentation
jinja_compose [-h] [--template TEMPLATE] [--output OUTPUT] [--injection-file INJECTION_FILE] [--dockercmd [DOCKERCMD]] [--as-root] [action ...]
positional arguments:
action
options:
-h, --help show this help message and exit
--template TEMPLATE, -i TEMPLATE, -t TEMPLATE
--output OUTPUT, -o OUTPUT
--injection-file INJECTION_FILE, -p INJECTION_FILE
--dockercmd [DOCKERCMD], -d [DOCKERCMD]
--as-root, -r
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for jinja-compose-wrapper-0.0.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 407d7f4eb7e979b45ef2ce2bd7c47cc88d796dcd592873b81425357e1de092e7 |
|
MD5 | 2a1a9a9fa2a29e701d96b23d50026da9 |
|
BLAKE2b-256 | 56cea1c6b6fb2ad1043068cf26490829e0be8bb1c801dfb69d39f359eac2f237 |
Hashes for jinja_compose_wrapper-0.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 727de85f0146c0512d3f3816473a3cda4b3e57ccba1120a4d96c7dd45937d0af |
|
MD5 | e34b5c9d2b732f68a00cdc101da850a1 |
|
BLAKE2b-256 | 386d699ad2b2d9e1467a2f741d35899ffd36130cc5207efbbc35c5c1d86c7dd9 |