compose.yaml 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. ---
  2. name: "Nginx"
  3. description: "An open-source web server"
  4. version: "0.0.1"
  5. date: "2023-10-01"
  6. author: "Christian Lempa"
  7. tags:
  8. - nginx
  9. - web
  10. - reverse-proxy
  11. ---
  12. services:
  13. {{ service_name | default('nginx') }}:
  14. image: docker.io/library/nginx:1.28.0-alpine
  15. {% if not swarm %}
  16. container_name: {{ container_name | default('nginx') }}
  17. {% endif %}
  18. {% if swarm %}
  19. deploy:
  20. replicas: {{ swarm_replicas | default(1) }}
  21. {% if traefik %}
  22. labels:
  23. - traefik.enable={{ traefik_enable | default(true) }}
  24. - traefik.http.services.{{ container_name }}.loadbalancer.server.port=80
  25. - traefik.http.routers.{{ container_name }}.entrypoints=websecure
  26. - traefik.http.routers.{{ container_name }}.rule=Host(`{{ traefik_host }}`)
  27. - traefik.http.routers.{{ container_name }}.tls={{ traefik_tls | default(true) }}
  28. - traefik.http.routers.{{ container_name }}.tls.certresolver={{ traefik_certresolver }}
  29. - traefik.http.routers.{{ container_name }}.service={{ container_name }}
  30. {% endif %}
  31. {% endif %}
  32. {% if not traefik %}
  33. ports:
  34. - "{{ service_port['http'] | default(8080) }}:80"
  35. - "{{ service_port['https'] | default(8443) }}:443"
  36. {% endif %}
  37. # volumes:
  38. # - ./config/default.conf:/etc/nginx/conf.d/default.conf:ro
  39. # - ./data:/usr/share/nginx/html:ro
  40. {% if traefik and not swarm %}
  41. labels:
  42. - traefik.enable={{ traefik_enable | default(true) }}
  43. - traefik.http.services.{{ container_name }}.loadbalancer.server.port=80
  44. - traefik.http.routers.{{ container_name }}.entrypoints=websecure
  45. - traefik.http.routers.{{ container_name }}.rule=Host(`{{ traefik_host }}`)
  46. - traefik.http.routers.{{ container_name }}.tls={{ traefik_tls | default(true) }}
  47. - traefik.http.routers.{{ container_name }}.tls.certresolver={{ traefik_certresolver }}
  48. - traefik.http.routers.{{ container_name }}.service={{ container_name }}
  49. {% endif %}
  50. networks:
  51. - {{ docker_network | default('bridge') }}
  52. {% if not swarm %}
  53. restart: unless-stopped
  54. {% endif %}
  55. networks:
  56. {{ docker_network | default('bridge') }}:
  57. external: true