ansible/roles/web/templates/docker-compose.yml.j2

52 lines
1.5 KiB
Django/Jinja

version: "{{ compose_version }}"
networks:
proxy:
name: "{{ traefik_network }}"
php:
name: php
services:
{% for website in websites_to_up %}
{{ website.name }}:
container_name: web_{{ website.name }}
image: nginx:alpine
volumes:
- {{ websites_basepath }}/{{ website.name }}:/var/www/html:ro
- {{ websites_basepath }}/{{ website.name }}.conf:/etc/nginx/conf.d/default.conf:ro
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
labels:
traefik.http.routers.{{ website.name }}.entrypoints: websecure
traefik.http.routers.{{ website.name }}.rule: "Host(`{{ website.name }}.{{ domain_name }}`)"
traefik.http.services.{{ website.name }}.loadbalancer.server.port: "{{ nginx_internal_port }}"
traefik.enable: true
networks:
- proxy
- php
read_only: true
tmpfs:
- /var/cache/nginx
- /run
restart: unless-stopped
{% endfor %}
{# Up a php container if any of the website needs PHP #}
{% if websites_to_up | selectattr('php', 'equalto', 'true') | list | length > 0 %}
php:
container_name: php
image: php:{{ php_version }}
networks:
- php
volumes:
{# Mount files from websites which need PHP #}
{% for website in websites_to_up %}
{% if website.php == "true" %}
- {{ websites_basepath }}/{{ website.name }}:/var/www/html/{{ website.name }}:ro
{% endif %}
{% endfor %}
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
{% endif %}