132 lines
3.6 KiB
Django/Jinja
132 lines
3.6 KiB
Django/Jinja
services:
|
|
{% for service in services %}
|
|
{% if inventory_hostname in service.vm %}
|
|
{{ service.name }}:
|
|
container_name: {{ service.container_name }}
|
|
image: {{ service.image }}
|
|
restart: {{ service.restart }}
|
|
{% if service.network_mode is not defined %}
|
|
hostname: {{ service.name }}
|
|
networks:
|
|
- net
|
|
{% endif %}
|
|
{% if service.ports is defined and service.ports is iterable %}
|
|
{% if service.ports[0].internal != 'proxy_only' %}
|
|
ports:
|
|
{% for port in service.ports %}
|
|
{% if port.internal != 'proxy_only' %}
|
|
- {{ port.external }}:{{ port.internal }}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endif %}
|
|
{% if service.cap_add is defined and service.cap_add is iterable %}
|
|
cap_add:
|
|
{% for cap in service.cap_add %}
|
|
- {{ cap }}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% if service.depends_on is defined and service.depends_on is iterable %}
|
|
depends_on:
|
|
{% for dependency in service.depends_on %}
|
|
- {{ dependency }}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% if service.network_mode is defined %}
|
|
network_mode: {{ service.network_mode }}
|
|
{% endif %}
|
|
{% if service.privileged is defined %}
|
|
privileged: {{ service.privileged }}
|
|
{% endif %}
|
|
{% if service.volumes is defined and service.volumes is iterable %}
|
|
volumes:
|
|
{% for volume in service.volumes %}
|
|
- {{ volume.external }}:{{ volume.internal }}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% if service.environment is defined and service.environment is iterable %}
|
|
environment:
|
|
{% for env in service.environment %}
|
|
- {{ env }}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% if service.devices is defined and service.devices is iterable %}
|
|
devices:
|
|
{% for device in service.devices %}
|
|
- {{ device.external }}:{{ device.internal }}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% if service.command is defined and service.command is iterable %}
|
|
command:
|
|
{% for command in service.command %}
|
|
- {{ command }}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% if service.name == 'paperless' %}
|
|
|
|
{{ service.name }}-broker:
|
|
container_name: {{ service.name }}-broker
|
|
image: docker.io/library/redis:7
|
|
restart: unless-stopped
|
|
networks:
|
|
- net
|
|
volumes:
|
|
- /opt/local/paperless/redis/data:/data
|
|
|
|
{{ service.name }}-postgres:
|
|
container_name: {{ service.name }}-postgres
|
|
image: docker.io/library/postgres:15
|
|
restart: unless-stopped
|
|
networks:
|
|
- net
|
|
volumes:
|
|
- /opt/local/paperless/db/data:/var/lib/postgresql/data
|
|
environment:
|
|
POSTGRES_DB: paperless
|
|
POSTGRES_USER: paperless
|
|
POSTGRES_PASSWORD: {{ vault.docker.paperless.dbpass }}
|
|
{% endif %}
|
|
{% if service.name == 'karakeep' %}
|
|
|
|
{{ service.name }}-chrome:
|
|
image: gcr.io/zenika-hub/alpine-chrome:123
|
|
container_name: {{ service.name }}-chrome
|
|
restart: unless-stopped
|
|
networks:
|
|
- net
|
|
command:
|
|
- --no-sandbox
|
|
- --disable-gpu
|
|
- --disable-dev-shm-usage
|
|
- --remote-debugging-address=0.0.0.0
|
|
- --remote-debugging-port=9222
|
|
- --hide-scrollbars
|
|
|
|
{{ service.name }}-meilisearch:
|
|
image: getmeili/meilisearch:v1.11.1
|
|
container_name: {{ service.name }}-meilisearch
|
|
restart: unless-stopped
|
|
networks:
|
|
- net
|
|
environment:
|
|
- MEILI_NO_ANALYTICS=true
|
|
- NEXTAUTH_SECRET={{ vault.docker.karakeep.nextauth_secret }}
|
|
- MEILI_MASTER_KEY={{ vault.docker.karakeep.meili_master_key }}
|
|
- OPENAI_API_KEY="{{ vault.docker.karakeep.openai_key }}"
|
|
volumes:
|
|
- /opt/local/karakeep/meili/data:/meili_data
|
|
{% endif %}
|
|
|
|
{% endif %}
|
|
{% endfor %}
|
|
networks:
|
|
net:
|
|
driver: bridge
|
|
ipam:
|
|
driver: default
|
|
config:
|
|
- subnet: 172.16.69.0/24
|
|
|
|
volumes:
|
|
prometheus_data: {}
|