services: {{ service_name }}: image: docker.io/portainer/portainer-ce:2.38.1-alpine {% if not swarm_enabled %} restart: {{ restart_policy }} {% endif %} environment: - TZ={{ container_timezone }} {% if traefik_enabled %} networks: {{ traefik_network }}: {% endif %} ports: {% if not traefik_enabled %} - "{{ ports_http }}:9000" - "{{ ports_https }}:9443" {% endif %} - "{{ ports_edge }}:8000" volumes: - /run/docker.sock:/var/run/docker.sock {% if volume_mode == 'mount' %} - {{ volume_mount_path }}/data:/data {% else %} - {{ service_name }}_data:/data {% endif %} {% if traefik_enabled and not swarm_enabled %} labels: - traefik.enable=true - traefik.docker.network={{ traefik_network }} - traefik.http.services.{{ service_name }}_web.loadBalancer.server.port=9000 - traefik.http.routers.{{ service_name }}_http.service={{ service_name }}_web - traefik.http.routers.{{ service_name }}_http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`) - traefik.http.routers.{{ service_name }}_http.entrypoints=web {% if traefik_tls_enabled %} - traefik.http.routers.{{ service_name }}_https.service={{ service_name }}_web - traefik.http.routers.{{ service_name }}_https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`) - traefik.http.routers.{{ service_name }}_https.entrypoints=websecure - traefik.http.routers.{{ service_name }}_https.tls=true - traefik.http.routers.{{ service_name }}_https.tls.certresolver={{ traefik_tls_certresolver }} {% endif %} {% endif %} {% if swarm_enabled %} deploy: mode: replicated replicas: 1 {% if swarm_placement_host %} placement: constraints: - node.hostname == {{ swarm_placement_host }} {% endif %} restart_policy: condition: on-failure {% if traefik_enabled %} labels: - traefik.enable=true - traefik.docker.network={{ traefik_network }} - traefik.http.services.{{ service_name }}_web.loadBalancer.server.port=9000 - traefik.http.routers.{{ service_name }}_http.service={{ service_name }}_web - traefik.http.routers.{{ service_name }}_http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`) - traefik.http.routers.{{ service_name }}_http.entrypoints=web {% if traefik_tls_enabled %} - traefik.http.routers.{{ service_name }}_https.service={{ service_name }}_web - traefik.http.routers.{{ service_name }}_https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`) - traefik.http.routers.{{ service_name }}_https.entrypoints=websecure - traefik.http.routers.{{ service_name }}_https.tls=true - traefik.http.routers.{{ service_name }}_https.tls.certresolver={{ traefik_tls_certresolver }} {% endif %} {% endif %} {% endif %} {% if volume_mode == 'local' %} volumes: {{ service_name }}_data: driver: local {% elif volume_mode == 'nfs' %} volumes: {{ service_name }}_data: driver: local driver_opts: type: nfs o: addr={{ volume_nfs_server }},nfsvers=4,{{ volume_nfs_options }} device: ":{{ volume_nfs_path }}/data" {% endif %} {% if traefik_enabled %} networks: {{ traefik_network }}: external: true {% endif %}