Para qualquer modificação, atualização ou melhoria, sinta-se à vontade para retornar a esta página para revisar ou personalizar o código conforme desejar.

*Antes de prosseguir com este tutorial, é necessário ter iniciado o modo Swarm do Docker.

🎯 O que vamos fazer?

  1. Criar uma rede para o Agent do Portainer
  2. Cria uma Rede para o Traefik (Opcional)
  3. Subir a Stack com o Serviço do Portainer e Agent

🌐 Criar Rede para Portainer

Se ainda não criou uma rede para trabalhar com o portainer, poderá executar o comando abaixo no seu terminal.

docker network create --driver=overlay agent_network

O Portainer possui dois serviços: o próprio Portainer e o Agent. O Agent é responsável por monitorar as máquinas no swarm. É importante criar essa rede antes de subir a stack.

🌐 Criar rede Para o Traefik (Opcional)

Seguindo o padrão mencionado nos vídeos, iremos utilizar o Traefik e, aproveitando, podemos criar a rede do mesmo. O Traefik será implantado posteriormente dentro do Portainer, mas podemos criar sua rede desde já.

docker network create --driver=overlay traefik_public

✏️ Stack do Portainer

Em seguida, você poderá copiar o arquivo abaixo para fazer o deploy do Portainer.

version: "3.8"

services:
  agent:
    image: portainer/agent:latest
    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:latest
    command: -H tcp://tasks.agent:9001 --tlsskipverify
    ports:
      - 9000:9000
    volumes:
      - portainer_data:/data
    networks:
      - agent_network
      - traefik_public
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [ node.role == manager ]
      #labels:
        #- "traefik.enable=true"
        #- "traefik.docker.network=traefik_public"
        #- "traefik.http.routers.portainer.rule=Host(`portainer.SEU_DOMINIO.com`)"
        #- "traefik.http.routers.portainer.entrypoints=websecure"
        #- "traefik.http.routers.portainer.tls.certresolver=le"
        #- "traefik.http.routers.portainer.service=portainer"
        #- "traefik.http.services.portainer.loadbalancer.server.port=9000"

networks:
  traefik_public:
    external: true
    attachable: true
  agent_network:
    external: true

volumes:
  portainer_data:
    external: true

📄 Deploy do Portainer

Utilize o comando a baixo para subir a stack do portainer com docker swarm.

docker stack deploy -c portainer.yaml portainer

Caso queira remover a stack