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
File details
Details for the file jinja-compose-wrapper-0.0.4.tar.gz
.
File metadata
- Download URL: jinja-compose-wrapper-0.0.4.tar.gz
- Upload date:
- Size: 4.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 407d7f4eb7e979b45ef2ce2bd7c47cc88d796dcd592873b81425357e1de092e7 |
|
MD5 | 2a1a9a9fa2a29e701d96b23d50026da9 |
|
BLAKE2b-256 | 56cea1c6b6fb2ad1043068cf26490829e0be8bb1c801dfb69d39f359eac2f237 |
File details
Details for the file jinja_compose_wrapper-0.0.4-py3-none-any.whl
.
File metadata
- Download URL: jinja_compose_wrapper-0.0.4-py3-none-any.whl
- Upload date:
- Size: 6.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 727de85f0146c0512d3f3816473a3cda4b3e57ccba1120a4d96c7dd45937d0af |
|
MD5 | e34b5c9d2b732f68a00cdc101da850a1 |
|
BLAKE2b-256 | 386d699ad2b2d9e1467a2f741d35899ffd36130cc5207efbbc35c5c1d86c7dd9 |