Last active
December 28, 2021 18:18
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 $@ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
for last docker image you have to use :
portainer/portainer-ce:latest