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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|