freeleaps-service-hub/sites/content/deploy/deploy.sh
2024-10-29 20:15:48 -07:00

85 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
DW_BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
APP_NAME=content
while [ $# -gt 0 ]; do
case "$1" in
--target* | -u*)
if [[ "$1" != *=* ]]; then shift; fi # Value is next arg if no `=`
TARGET_ENV="${1#*=}"
;;
--help | -h)
printf "$BASE_NAME --target=<prod | alpha | dev>\n" # Flag argument
return 0
;;
*)
printf >&2 "Error: Invalid argument\n"
return 1
;;
esac
shift
done
if [[ "${TARGET_ENV}" != "prod" && "${TARGET_ENV}" != "alpha" && "${TARGET_ENV}" != "dev" ]]; then
printf "$BASE_NAME --target=<prod | alpha | dev>\n" # Flag argument
return 0
fi
if git rev-parse --git-dir > /dev/null 2>&1; then
# git repo!
GIT_REPO_ROOT=$(git rev-parse --show-toplevel)
CODEBASE_ROOT=$GIT_REPO_ROOT/app/$APP_NAME
WORKING_DIR=$GIT_REPO_ROOT/sites/$APP_NAME/deploy
else
# NOT a git repo!
printf "Please run this command under a git repo"
return 0
fi
. $DW_BASE_DIR/common/.host.env
DW_PUSHD_COUNTER=0
ENV_FOLDER=$WORKING_DIR/$TARGET_ENV
COMMON_ENV_FOLDER=$WORKING_DIR/common
pushd $WORKING_DIR
DW_PUSHD_COUNTER=$((DW_PUSHD_COUNTER + 1))
echo export APP_NAME=$APP_NAME > $WORKING_DIR/.env
cat $COMMON_ENV_FOLDER/.env >> $WORKING_DIR/.env
echo export CODEBASE_ROOT=$CODEBASE_ROOT >> $WORKING_DIR/.env
echo export WORKING_DIR=$WORKING_DIR >> $WORKING_DIR/.env
cat $COMMON_ENV_FOLDER/.host.env >> $WORKING_DIR/.env
cat $ENV_FOLDER/.env >>$WORKING_DIR/.env
cp $DW_BASE_DIR/common/docker-compose.yaml $WORKING_DIR
. $WORKING_DIR/.env
sudo mkdir $DOCKER_BACKEND_LOG_HOME -p
sudo docker compose --profile $TARGET_ENV down --remove-orphans
sudo docker compose --profile $TARGET_ENV build --no-cache
# Clean up any previous resources that are not needed
# sudo docker system prune -f --volumes
# sudo docker image prune -f
# sudo docker container prune -f
# sudo docker network prune -f
# Start up the Docker containers in detached mode and remove orphans
sudo docker compose --profile $TARGET_ENV up --detach --remove-orphans
echo 'You can use "sudo docker compose logs -f" to check the output of the containers'
sudo docker ps -a
rm $WORKING_DIR/.env
rm $WORKING_DIR/docker-compose.yaml
while [[ "$DW_PUSHD_COUNTER" -gt 0 ]]; do
DW_PUSHD_COUNTER=$((DW_PUSHD_COUNTER - 1))
popd
done