compose.yaml.j2 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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.docker.network={{ traefik_network | default('traefik') }}
  14. - traefik.http.services.{{ container_name | default('nginx') }}.loadbalancer.server.port=80
  15. - traefik.http.routers.{{ container_name | default('nginx') }}-http.rule=Host(`{{ traefik_host }}`)
  16. - traefik.http.routers.{{ container_name | default('nginx') }}-http.entrypoints={{ traefik_entrypoint | default('web') }}
  17. - traefik.http.routers.{{ container_name | default('nginx') }}-http.service={{ container_name | default('nginx') }}
  18. {% if traefik_tls_enabled %}
  19. - traefik.http.routers.{{ container_name | default('nginx') }}-https.rule=Host(`{{ traefik_host }}`)
  20. - traefik.http.routers.{{ container_name | default('nginx') }}-https.entrypoints={{ traefik_tls_entrypoint | default('websecure') }}
  21. - traefik.http.routers.{{ container_name | default('nginx') }}-https.tls=true
  22. - traefik.http.routers.{{ container_name | default('nginx') }}-https.tls.certresolver={{ traefik_tls_certresolver }}
  23. - traefik.http.routers.{{ container_name | default('nginx') }}-https.service={{ container_name | default('nginx') }}
  24. {% endif %}
  25. {% endif %}
  26. {% endif %}
  27. {% if ports_enabled %}
  28. ports:
  29. - "{{ ports_http | default(8080) }}:80"
  30. - "{{ ports_https | default(8443) }}:443"
  31. {% endif %}
  32. # volumes:
  33. # - ./config/default.conf:/etc/nginx/conf.d/default.conf:ro
  34. # - ./data:/usr/share/nginx/html:ro
  35. {% if traefik_enabled and not swarm_enabled %}
  36. labels:
  37. - traefik.enable=true
  38. - traefik.docker.network={{ traefik_network | default('traefik') }}
  39. - traefik.http.services.{{ container_name | default('nginx') }}.loadbalancer.server.port=80
  40. - traefik.http.routers.{{ container_name | default('nginx') }}-http.rule=Host(`{{ traefik_host }}`)
  41. - traefik.http.routers.{{ container_name | default('nginx') }}-http.entrypoints={{ traefik_entrypoint | default('web') }}
  42. - traefik.http.routers.{{ container_name | default('nginx') }}-http.service={{ container_name | default('nginx') }}
  43. {% if traefik_tls_enabled %}
  44. - traefik.http.routers.{{ container_name | default('nginx') }}-https.rule=Host(`{{ traefik_host }}`)
  45. - traefik.http.routers.{{ container_name | default('nginx') }}-https.entrypoints={{ traefik_tls_entrypoint | default('websecure') }}
  46. - traefik.http.routers.{{ container_name | default('nginx') }}-https.tls=true
  47. - traefik.http.routers.{{ container_name | default('nginx') }}-https.tls.certresolver={{ traefik_tls_certresolver }}
  48. - traefik.http.routers.{{ container_name | default('nginx') }}-https.service={{ container_name | default('nginx') }}
  49. {% endif %}
  50. {% endif %}
  51. {% if network_enabled %}
  52. networks:
  53. - {{ network_name | default('bridge') }}
  54. {% endif %}
  55. {% if not swarm_enabled %}
  56. restart: {{ restart_policy | default('unless-stopped') }}
  57. {% endif %}
  58. {% if network_enabled %}
  59. networks:
  60. {{ network_name | default('bridge') }}:
  61. {% if network_external %}
  62. external: true
  63. {% endif %}
  64. {% endif %}