Skip to content

Instantly share code, notes, and snippets.

@aweijnitz
Created January 9, 2024 20:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aweijnitz/4b94faa59ac5cebeb21a77fc887a5344 to your computer and use it in GitHub Desktop.
Save aweijnitz/4b94faa59ac5cebeb21a77fc887a5344 to your computer and use it in GitHub Desktop.
Deploy docker image to remote Docker Server via ssh
set -e
REMOTE_USERNAME="<REMOTE_USER_NAME>"
SSHKEY="<PATH_TO_SSH_KEY_HERE>"
REMOTE_HOST="<HOSTNAME_HERE>"
IMAGE_NAME="$1" # The name of the image including tag. Example: dockertest:1.0.0
TAG_NAME="$2"
CONTAINER_NAME=$IMAGE_NAME
# Check if an argument is provided
if [ -z "$IMAGE_NAME" ]; then
echo "Usage: $0 <image_name tag_NAME> Example: $0 dockertest 1.0.0"
exit 1
fi
echo "Building ${IMAGE_NAME}:${TAG_NAME}"
docker build -t $IMAGE_NAME:$TAG_NAME .
docker save $IMAGE_NAME:$TAG_NAME | bzip2 | pv | ssh -i $SSHKEY $REMOTE_USERNAME@$REMOTE_HOST 'bunzip2 | sudo docker load'
# Clean up
ssh -i $SSHKEY -tt $REMOTE_USERNAME@$REMOTE_HOST << EOF
sudo docker stop ${CONTAINER_NAME}
sudo docker wait ${CONTAINER_NAME}
sudo docker rm -f ${CONTAINER_NAME}
sudo docker run -d -p 7777:7777 --restart=unless-stopped --name ${CONTAINER_NAME} ${IMAGE_NAME}:${TAG_NAME}
sudo docker image prune -a --force
sudo docker ps
exit
EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment