version: '3.2' services: agent: image: portainer/agent:2.21.5 volumes: - /var/run/docker.sock:/var/run/docker.sock - /var/lib/docker/volumes:/var/lib/docker/volumes networks: - agent_network deploy: mode: global placement: constraints: [node.platform.os == linux] portainer: image: portainer/portainer-ce:alpine command: -H tcp://tasks.agent:9001 --tlsskipverify ports: - "8000:8000" volumes: - /var/run/docker.sock:/var/run/docker.sock - {{ portainer_base }}/volumes/data:/data networks: - proxy - agent_network deploy: mode: replicated replicas: 1 placement: constraints: [node.role == manager] labels: - traefik.enable=true - traefik.swarm.network=proxy - traefik.http.routers.portainer.rule=Host(`{{ portainer_host }}`) - traefik.http.routers.portainer.entrypoints=websecure - traefik.http.routers.portainer.tls=true - traefik.http.routers.portainer.tls.certResolver=letsencrypt - traefik.http.services.portainer.loadbalancer.server.port=9000 networks: proxy: external: true agent_network: driver: overlay attachable: true