compose.yaml.j2 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. services:
  2. {{ service_name | default('nginx') }}:
  3. image: docker.io/library/nginx:1.28.0-alpine
  4. {% if not swarm_enabled %}
  5. container_name: {{ container_name | default('nginx') }}
  6. {% endif %}
  7. {% if swarm_enabled %}
  8. deploy:
  9. replicas: {{ swarm_replicas | default(1) }}
  10. {% if traefik_enabled %}
  11. labels:
  12. - traefik.enable=true
  13. - traefik.http.services.{{ container_name | default('nginx') }}.loadbalancer.server.port=80
  14. - traefik.http.routers.{{ container_name | default('nginx') }}.entrypoints={{ traefik_tls_entrypoint | default('websecure') }}
  15. - traefik.http.routers.{{ container_name | default('nginx') }}.rule=Host(`{{ traefik_host }}`)
  16. - traefik.http.routers.{{ container_name | default('nginx') }}.tls={{ traefik_tls_enabled | default(true) }}
  17. - traefik.http.routers.{{ container_name | default('nginx') }}.tls.certresolver={{ traefik_tls_certresolver }}
  18. - traefik.http.routers.{{ container_name | default('nginx') }}.service={{ container_name | default('nginx') }}
  19. {% endif %}
  20. {% endif %}
  21. {% if ports_enabled %}
  22. ports:
  23. - "{{ ports_http | default(8080) }}:80"
  24. - "{{ ports_https | default(8443) }}:443"
  25. {% endif %}
  26. # volumes:
  27. # - ./config/default.conf:/etc/nginx/conf.d/default.conf:ro
  28. # - ./data:/usr/share/nginx/html:ro
  29. {% if traefik_enabled and not swarm_enabled %}
  30. labels:
  31. - traefik.enable=true
  32. - traefik.http.services.{{ container_name | default('nginx') }}.loadbalancer.server.port=80
  33. - traefik.http.routers.{{ container_name | default('nginx') }}.rule=Host(`{{ traefik_host }}`)
  34. {% if traefik_tls_enabled %}
  35. - traefik.http.routers.{{ container_name | default('nginx') }}.entrypoints={{ traefik_tls_entrypoint | default('websecure') }}
  36. - traefik.http.routers.{{ container_name | default('nginx') }}.tls=true
  37. - traefik.http.routers.{{ container_name | default('nginx') }}.tls.certresolver={{ traefik_tls_certresolver }}
  38. {% else %}
  39. - traefik.http.routers.{{ container_name | default('nginx') }}.entrypoints={{ traefik_entrypoint | default('web') }}
  40. {% endif %}
  41. - traefik.http.routers.{{ container_name | default('nginx') }}.service={{ container_name | default('nginx') }}
  42. {% endif %}
  43. {% if network_enabled %}
  44. networks:
  45. - {{ network_name | default('bridge') }}
  46. {% endif %}
  47. {% if not swarm_enabled %}
  48. restart: {{ restart_policy | default('unless-stopped') }}
  49. {% endif %}
  50. {% if network_enabled %}
  51. networks:
  52. {{ network_name | default('bridge') }}:
  53. {% if network_external %}
  54. external: true
  55. {% endif %}
  56. {% endif %}