# vim: ft=yaml
version: '3.2'

services:
  app:
    image: 'portainer/portainer-ce:{{ portainer.version }}-alpine'
    command: '-H tcp://tasks.agent:9001 --tlsskipverify'

    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      labels:
        - 'traefik.enable=true'
        - 'traefik.http.routers.portainer.rule=Host(`{{ portainer.domain }}`)'
        - 'traefik.http.routers.portainer.service=portainer'
        - 'traefik.http.services.portainer.loadbalancer.server.port=9000'
        - 'traefik.http.routers.portainer.tls=true'
        - 'traefik.http.routers.portainer.tls.certresolver=letsEncrypt'
        - 'traefik.http.middlewares.portainer.compress=true'

    networks:
      - default
      - public
    volumes:
      - 'data:/data'
    ports:
      - '8000:8000'

  agent:
    image: 'portainer/agent:{{ portainer.version }}-alpine'

    deploy:
      mode: global
      placement:
        constraints:
          - node.platform.os == linux

    volumes:
      - '/var/run/docker.sock:/var/run/docker.sock'
      - '/var/lib/docker/volumes:/var/lib/docker/volumes'

networks:
  default:
    driver: overlay
    attachable: true
  public:
    external: true

volumes:
  data: