pod-porter Templates
pod-porter uses Jinja2 templates to render the compose files. The templates are stored in the templates
directory in the map. The templates are rendered using the values from the values.yaml file.
Example template for MongoDB service
---
services:
mongo:
image: "{{ values.image.mongo.repository }}:{{ values.image.mongo.tag }}"
hostname: "{{ release.name }}-mongo"
container_name: "{{ release.name }}-mongo"
ports:
- "{{ values.service.mongo.node_port }}:{{ values.service.mongo.container_port }}"
environment:
{% for env in values.environment.mongo %}
{{ env.name }}: "{{ env.value }}"
{% endfor %}
volumes:
{% for volume in values.volumes.mongo %}
- "{{ volume.name }}:{{ volume.value }}"
{% endfor %}
Example template for MongoDB Express service
---
services:
mongo-express:
image: "{{ values.image.mongo_express.repository }}:{{ values.image.mongo_express.tag }}"
hostname: "{{ release.name }}-mongo-express"
container_name: "{{ release.name }}-mongo-express"
ports:
- "{{ values.service.mongo_express.node_port }}:{{ values.service.mongo_express.container_port }}"
environment:
ME_CONFIG_MONGODB_SERVER: "{{ release.name }}-mongo"
{% for env in values.environment.mongo_express %}
{{ env.name }}: "{{ env.value }}"
{% endfor %}
Example template for MongoDB volumes
---
volumes:
{% for volume in values.volumes.mongo %}
{{ volume.name }}:
{% endfor %}
Example template for MongoDB volumes
---
volumes:
{% for volume in values.volumes.mongo %}
{{ volume.name }}:
{% endfor %}
Example template for Batfish service
---
services:
batfish:
image: "{{ values.image.batfish.repository }}:{{ values.image.batfish.tag }}"
hostname: "{{ release.name }}-batfish"
container_name: "{{ release.name }}-batfish"
ports:
{% for port in values.service.batfish %}
- "{{ port.node_port }}:{{ port.container_port }}"
{% endfor %}
volumes:
- "batfish-data-compose:/data"
Example template for Batfish volumes
---
volumes:
batfish-data-compose:
Using these templates and the values from the values.yaml file, pod-porter will render the compose files.
pod-porter write -n thing -m docs\source\directions\examples\structure\multi_map\mongo -o docs\source\directions\examples\structure\multi_map
Example rendered compose file for MongoDB service it names itself thing-mongo-1.0.0.yaml
---
configs: {}
networks: {}
secrets:
key:
external: true
services:
batfish:
container_name: thing-batfish
hostname: thing-batfish
image: docker.io/batfish/allinone:latest
ports:
- 8888:8888
- 9997:9997
- 9996:9996
volumes:
- batfish-data-compose:/data
mongo:
container_name: thing-mongo
environment:
MONGO_INITDB_ROOT_PASSWORD: example
MONGO_INITDB_ROOT_USERNAME: root
hostname: thing-mongo
image: docker.io/library/mongo:8.0.3
ports:
- 27017:27017
volumes:
- mongo-data-db-compose:/data/db
- mongo-data-configdb-compose:/data/configdb
mongo-express:
container_name: thing-mongo-express
environment:
ME_CONFIG_MONGODB_ADMINPASSWORD: example
ME_CONFIG_MONGODB_ADMINUSERNAME: root
ME_CONFIG_MONGODB_SERVER: thing-mongo
hostname: thing-mongo-express
image: docker.io/library/mongo-express:1.0.2
ports:
- 8181:8081
volumes:
batfish-data-compose: null
mongo-data-configdb-compose: null
mongo-data-db-compose: null