Skip to content

Instantly share code, notes, and snippets.

@jfisbein
Last active December 28, 2021 18:18
Show Gist options
  • Save jfisbein/9441b56292f5f4cc25a4f900c034e2f2 to your computer and use it in GitHub Desktop.
Save jfisbein/9441b56292f5f4cc25a4f900c034e2f2 to your computer and use it in GitHub Desktop.
Simple script to Start, Stop an Update Portainer running in Docker under Linux and OS X
#!/usr/bin/env bash
CONTAINER_NAME="portainer"
IMAGE_NAME="portainer/portainer-ce"
PORT=9000
DATA_DIR="/opt/portainer/data"
function container-exist() {
local CONTAINER_ID=${1}
docker inspect "${CONTAINER_ID}" &> /dev/null
return $?
}
function is-container-running() {
local CONTAINER_ID=${1}
local RUNNING=$(docker inspect --format '{{ .State.Running }}' "${CONTAINER_ID}")
if [[ "${RUNNING}" == "true" ]]; then
return 0
else
return 1
fi
}
function create-data-repo() {
if [ ! -d "${DATA_DIR}" ]; then
echo "We need to create a directory to store portainer data."
sudo mkdir -p "${DATA_DIR}"
fi
}
function launch() {
if ! container-exist ${CONTAINER_NAME}; then
create-data-repo
docker run --name ${CONTAINER_NAME} --volume "/var/run/docker.sock:/var/run/docker.sock" --volume /opt/portainer/data:/data --detach --restart unless-stopped --publish $PORT:9000 $IMAGE_NAME
elif ! is-container-running ${CONTAINER_NAME}; then
create-data-repo
docker start ${CONTAINER_NAME}
fi
# local IP_ADDRESS=$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' "${CONTAINER_NAME}")
if [ "$(uname)" == "Darwin" ]; then
open "http://localhost:${PORT}/" > /dev/null 2>&1
else
xdg-open "http://localhost:${PORT}/" > /dev/null 2>&1
fi
}
function stop() {
if is-container-running "${CONTAINER_NAME}"; then
docker stop "${CONTAINER_NAME}"
fi
}
function update() {
docker pull ${IMAGE_NAME}
docker stop ${CONTAINER_NAME}
docker rm ${CONTAINER_NAME}
launch
}
function main() {
if [ $# -eq 1 ]; then
ACTION=${1^^}
else
ACTION="START"
fi
if [[ "${ACTION}" == "STOP" ]]; then
stop
elif [[ "${ACTION}" == "UPDATE" ]]; then
update
elif [[ "${ACTION}" == "START" ]]; then
launch
else
echo "Unknown command ${ACTION}"
echo "Usage: $(basename "${0}") START|UPDATE|STOP"
exit -2
fi
}
main $@
@oijkn
Copy link

oijkn commented Dec 28, 2021

for last docker image you have to use : portainer/portainer-ce:latest

@jfisbein
Copy link
Author

Corrected, thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment