#!/bin/bash # Update Portainer container set -e CONTAINER_NAME="portainer" IMAGE="portainer/portainer-ce:latest" echo "=== Updating Portainer ===" # Check Docker if ! command -v docker >/dev/null 2>&1; then echo "ERROR: Docker not found." exit 1 fi # Pull latest image echo "Pulling latest image..." docker pull "${IMAGE}" # Stop existing container if present if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then echo "Stopping existing container..." docker stop "${CONTAINER_NAME}" echo "Removing existing container..." docker rm "${CONTAINER_NAME}" fi # Recreate container echo "Creating new container..." docker run -d \ --name "${CONTAINER_NAME}" \ --restart=always \ -p 9002:9000 \ -p 9442:9443 \ -v /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt:ro \ -v /run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ "${IMAGE}" echo "Waiting for startup..." sleep 5 # Verify if docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then echo "SUCCESS: Portainer updated successfully." docker ps | grep "${CONTAINER_NAME}" else echo "ERROR: Portainer container is not running." docker logs "${CONTAINER_NAME}" exit 1 fi