You've already forked pedini.dev
Removes the 'docker compose restart' command from the deployment script as it was causing unnecessary service interruptions during deployment. The tar extraction and cleanup steps are sufficient for updating the application files without requiring a full container restart.
42 lines
1.5 KiB
Bash
Executable File
42 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
###
|
|
# FLOW
|
|
###
|
|
#
|
|
# if the private key variable is set, prepend "-i" to it
|
|
# if the username variable is set, append the at sign to it
|
|
# if either the deployment host or deployment path variables are not set, return an error
|
|
# tarball the built website and scp it to the deployment host
|
|
# ssh to the remote host, cd to the deployment path, and get the data path from .env file
|
|
# then remove everything in the data path, untar the tarball and reload the server
|
|
# finally remove the tarball, both from the remote host and locally (cleanup)
|
|
|
|
# Check if the private key variable is set
|
|
if [ ! -z "${SSH_PRIVATE_KEY}" ]; then
|
|
SSH_PRIVATE_KEY="-i ${SSH_PRIVATE_KEY}"
|
|
fi
|
|
|
|
# Check if the username variable is set
|
|
if [ ! -z "${SSH_USERNAME}" ]; then
|
|
SSH_USERNAME="${SSH_USERNAME}@"
|
|
fi
|
|
|
|
# Check if either the deployment host or deployment path variables are not set
|
|
if [ -z "${DEPLOYMENT_HOST}" ] || [ -z "${DEPLOYMENT_PATH}" ]; then
|
|
echo "required variable DEPLOYMENT_HOST is not set"
|
|
exit 1
|
|
fi
|
|
|
|
tar -czf httpdocs.tgz -C public .
|
|
scp -o StrictHostKeyChecking=no ${SSH_PRIVATE_KEY} httpdocs.tgz ${SSH_USERNAME}${DEPLOYMENT_HOST}:/tmp/httpdocs.tgz
|
|
ssh -o StrictHostKeyChecking=no ${SSH_PRIVATE_KEY} ${SSH_USERNAME}${DEPLOYMENT_HOST} "DEPLOYMENT_PATH=$DEPLOYMENT_PATH bash" << 'EOF'
|
|
cd ${DEPLOYMENT_PATH}
|
|
DATAPATH=$(cat .env | grep "NGINX_DATA" | sed "s/NGINX_DATA=//g")
|
|
rm -rf ${DATAPATH}/{*,.*}
|
|
tar xf /tmp/httpdocs.tgz -C ${DATAPATH}
|
|
rm -f /tmp/httpdocs.tgz
|
|
EOF
|
|
rm -f httpdocs.tgz
|