compose.yaml 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. ---
  2. kind: "compose"
  3. metadata:
  4. name: "Portainer"
  5. description: "An open-source container management tool"
  6. version: "0.0.1"
  7. date: "2023-10-01"
  8. author: "Christian Lempa"
  9. tags:
  10. - portainer
  11. - container-management
  12. - web
  13. spec:
  14. ports:
  15. vars:
  16. ports_http:
  17. description: "HTTP port for Portainer web interface"
  18. type: int
  19. default: 9000
  20. ports_https:
  21. description: "HTTPS port for Portainer web interface"
  22. type: int
  23. default: 9443
  24. ports_edge:
  25. description: "Edge agent port for Portainer"
  26. type: int
  27. default: 8000
  28. ---
  29. services:
  30. {{ service_name | default('portainer') }}:
  31. container_name: {{ container_name | default('portainer') }}
  32. image: docker.io/portainer/portainer-ce:2.33.1-alpine
  33. environment:
  34. - TZ={{ container_timezone | default('UTC') }}
  35. {% if ports_enabled %}
  36. ports:
  37. - "{{ ports_http | default(9000) }}:9000"
  38. - "{{ ports_https | default(9443) }}:9443"
  39. - "{{ ports_edge | default(8000) }}:8000"
  40. {% endif %}
  41. volumes:
  42. - /run/docker.sock:/var/run/docker.sock
  43. - portainer-data:/data
  44. {% if network_enabled %}
  45. networks:
  46. - {{ network_name | default('bridge') }}
  47. {% endif %}
  48. {% if traefik_enabled %}
  49. labels:
  50. - traefik.enable=true
  51. - traefik.http.services.{{ service_name | default('portainer') }}.loadbalancer.server.port=9000
  52. - traefik.http.routers.{{ service_name | default('portainer') }}.service={{ service_name | default('portainer') }}
  53. - traefik.http.routers.{{ service_name | default('portainer') }}.rule=Host(`{{ traefik_host }}`)
  54. {% if traefik_tls_enabled %}
  55. - traefik.http.routers.{{ service_name | default('portainer') }}.entrypoints={{ traefik_tls_entrypoint | default('websecure') }}
  56. - traefik.http.routers.{{ service_name | default('portainer') }}.tls=true
  57. - traefik.http.routers.{{ service_name | default('portainer') }}.tls.certresolver={{ traefik_tls_certresolver }}
  58. {% else %}
  59. - traefik.http.routers.{{ service_name | default('portainer') }}.entrypoints={{ traefik_entrypoint | default('web') }}
  60. {% endif %}
  61. {% endif %}
  62. restart: {{ restart_policy | default('unless-stopped') }}
  63. volumes:
  64. portainer-data:
  65. driver: local
  66. {% if network_enabled %}
  67. networks:
  68. {{ network_name | default('bridge') }}:
  69. {% if network_external %}
  70. external: true
  71. {% endif %}
  72. {% endif %}