4 - Portainer
Compose do Portainer
mkdir -p /srv/docker/core/portainer /srv/docker/volumes/portainer/data
tee /srv/docker/core/portainer/docker-compose.yml > /dev/null <<'EOF'
version: "3.8"
services:
portainer:
image: portainer/portainer-ce:latest
command: -H unix:///var/run/docker.sock
networks:
- traefik
volumes:
- /var/run/docker.sock:/var/run/docker.sock # bind (necessário)
- portainer_data:/data # volume nomeado preso ao esqueleto
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik"
- "traefik.http.routers.portainer.rule=Host(`portainer.wsl.lab.local`)"
- "traefik.http.routers.portainer.entrypoints=websecure"
- "traefik.http.routers.portainer.tls=true"
- "traefik.http.services.portainer.loadbalancer.server.port=9000"
networks:
traefik:
external: true
volumes:
portainer_data:
driver: local
driver_opts:
type: none
o: bind
device: /srv/docker/volumes/portainer/data
EOFDeploy do Portainer
docker stack deploy -c /srv/docker/core/portainer/docker-compose.yml portainerhttps://portainer.wsl.lab.localA primeira vez, crie o usuário administrador.
Comandos Úteis
Garantir a rede overlay (idempotente)
docker network create --driver overlay --attachable traefik 2>/dev/null || echo "Overlay 'traefik' já existe"Atualizar (redeploy) o Portainer
docker stack deploy -c /srv/docker/core/portainer/docker-compose.yml portainerOpcional: forçar recriação dos serviços se nada mudou no spec
docker service update --force portainer_portainerVerificação rápida
docker stack ps portainerLogs em tempo real (Ctrl+C para sair)
docker service logs -f portainer_portainerBackup
sudo bash -lc 'cd /srv/docker && mkdir -p .backup \
&& TS=$(date +%F_%H-%M-%S) \
&& tar -czf ".backup/traefik-${TS}.tar.gz" \
core/traefik/docker-compose.yml core/traefik/traefik.yml core/traefik/dynamic shared/certs \
&& echo "Gerado: /srv/docker/.backup/traefik-${TS}.tar.gz"'Restore — Portainer (último backup)
sudo bash -lc '
cd /srv/docker
BAK=$(ls -1t .backup/portainer-*.tar.gz | head -n1) || { echo "Nenhum backup portainer encontrado"; exit 1; }
echo ">> Restaurando: $BAK"
docker stack rm portainer >/dev/null 2>&1 || true
# espera o stack sumir
while docker stack ps portainer >/dev/null 2>&1; do sleep 1; done
tar -xzf "$BAK" -C /srv/docker
docker network create --driver overlay --attachable traefik 2>/dev/null || true
docker stack deploy -c core/portainer/docker-compose.yml portainer
'
No comments to display
No comments to display