Skip to content

Instantly share code, notes, and snippets.

@fdeh75
Created July 14, 2023 08:33
Show Gist options
  • Save fdeh75/1bebad4292f3f6714ba96f53d18b5f8f to your computer and use it in GitHub Desktop.
Save fdeh75/1bebad4292f3f6714ba96f53d18b5f8f to your computer and use it in GitHub Desktop.
Docker image simple geploy
#!/usr/bin/bash
set -x
set -e
DEPLOY_HOST=${1}
if [ -z "$DEPLOY_HOST" ]
then
echo 'DEPLOY_HOST is undefined'
exit 1
fi
_PROJECT_NAME=$(basename "$PWD")
PROJECT_NAME=${2:-$_PROJECT_NAME}
_CONTAINER_NAME="$PROJECT_NAME-app"
CONTAINER_NAME=${3:-$_CONTAINER_NAME}
_IMAGE_NAME="$PROJECT_NAME"
IMAGE_NAME=${4:-$_IMAGE_NAME}
docker build . -t "$IMAGE_NAME" --build-arg APP_ENV=production
docker save "$IMAGE_NAME" | gzip | pv | ssh "$DEPLOY_HOST" 'docker load'
#for use remote env learn: https://github.com/koalaman/shellcheck/wiki/SC2029
REMOTE_COMMAND="docker container stop $CONTAINER_NAME | true && \
docker container rm $CONTAINER_NAME | true && \
docker run \
--detach \
--name $CONTAINER_NAME \
--restart unless-stopped \
--publish 8081:5050 \
$IMAGE_NAME"
ssh "$DEPLOY_HOST" "$REMOTE_COMMAND"
ssh "$DEPLOY_HOST" "docker rmi \$(docker images --filter \"dangling=true\" -q)"
#docker rmi $(docker images --filter "dangling=true" -q)
#Quote this to prevent word splitting.: https://github.com/koalaman/shellcheck/wiki/SC2046
read -ra args < <(docker images --filter "dangling=true" -q)
docker rmi "${args[@]}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment