48 lines
1.4 KiB
Django/Jinja
48 lines
1.4 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
|
|
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 %}
|
|
restart: unless-stopped
|
|
{% endif %}
|