version: '3.9' services: agent: image: portainer/agent:latest environment: AGENT_CLUSTER_ADDR: tasks.agent volumes: - /var/run/docker.sock:/var/run/docker.sock - /home/docker/volumes:/var/lib/docker/volumes networks: - agent_network deploy: mode: global placement: constraints: [node.platform.os == linux] portainer: image: portainer/portainer-ce:latest command: -H tcp://tasks.agent:9001 --tlsskipverify volumes: - data:/data networks: - agent_network - traefik-public deploy: mode: replicated replicas: 1 placement: constraints: [node.role == manager] labels: - traefik.http.routers.portainer.rule=Host(`lsms-portainer.epfl.ch`) || (Host(`lsms-portainer.epfl.ch`) && PathPrefix(`/api`)) - traefik.http.routers.portainer.entrypoints=https - traefik.http.services.portainer.loadbalancer.server.port=9000 - traefik.docker.network=traefik-public - traefik.enable=true - traefik.http.routers.portainer.tls=true networks: agent_network: external: true traefik-public: external: true volumes: data: