From 06a235315336cd181640c1ecb5454d01ef66c262 Mon Sep 17 00:00:00 2001 From: ae Date: Wed, 23 Apr 2025 23:39:07 +0300 Subject: [PATCH] build: single dev. deployment shellscript --- .../docker-compose-back.yml | 2 +- .../docker-compose-full.yml | 2 +- scripts/purge.sh | 8 -- scripts/run_backend_dev.sh | 10 --- scripts/run_dev.sh | 79 +++++++++++++++++++ scripts/run_full_dev.sh | 10 --- 6 files changed, 81 insertions(+), 30 deletions(-) rename docker-compose-dev-backend.yml => docker/docker-compose-back.yml (98%) rename docker-compose.yml => docker/docker-compose-full.yml (98%) delete mode 100755 scripts/purge.sh delete mode 100755 scripts/run_backend_dev.sh create mode 100755 scripts/run_dev.sh delete mode 100755 scripts/run_full_dev.sh diff --git a/docker-compose-dev-backend.yml b/docker/docker-compose-back.yml similarity index 98% rename from docker-compose-dev-backend.yml rename to docker/docker-compose-back.yml index 5bb83ca..0aaba04 100644 --- a/docker-compose-dev-backend.yml +++ b/docker/docker-compose-back.yml @@ -45,7 +45,7 @@ services: networks: qnote: external: false - name: qnote + name: server_qnote volumes: qnote-data: diff --git a/docker-compose.yml b/docker/docker-compose-full.yml similarity index 98% rename from docker-compose.yml rename to docker/docker-compose-full.yml index ef97c78..93d3d71 100644 --- a/docker-compose.yml +++ b/docker/docker-compose-full.yml @@ -61,4 +61,4 @@ services: networks: qnote: external: false - name: qnote + name: full_qnote diff --git a/scripts/purge.sh b/scripts/purge.sh deleted file mode 100755 index fbab4af..0000000 --- a/scripts/purge.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -# Delete all Docker artifacts (e.g. DB) from previous test runs - -docker stop qnote-server qnote-psql && docker rm -f qnote-server qnote-psql -docker volume rm -f qnote-data -[ -d "data" ] && sudo rm -rf data - diff --git a/scripts/run_backend_dev.sh b/scripts/run_backend_dev.sh deleted file mode 100755 index fbbe338..0000000 --- a/scripts/run_backend_dev.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash - -DEV_COMPOSE_FILE="docker-compose-dev-backend.yml" - -[ "$( docker container inspect -f '{{.State.Status}}' qnote-psql )" = "running" ] || docker compose up qnote-psql -d - -# Shutdown, rebuild, & restart -docker compose stop qnote-server && docker compose rm -f qnote-server -docker compose -f $DEV_COMPOSE_FILE build -docker compose -f $DEV_COMPOSE_FILE up qnote-server diff --git a/scripts/run_dev.sh b/scripts/run_dev.sh new file mode 100755 index 0000000..f295eda --- /dev/null +++ b/scripts/run_dev.sh @@ -0,0 +1,79 @@ +#!/usr/bin/env bash + +usage () { + echo "[?] usage: $0 [-h|-f|-p]" + echo -e "\t-f run both frontend and backend (default: false)" + echo -e "\t-p purge any existing database artifacts (default: false)" + echo -e "\t-q only purge old data without building/spawning any new containers (default: false)" +} + +# Default to running the backend only without destroying old data from previous runs +RUN_FULLSTACK=false +PURGE_ARTIFACTS=false + +# Optionally only purge the existing data without running any new containers +PURGE_ONLY=false + +BACKEND_COMPOSE_FILE="docker/docker-compose-back.yml" +FULL_COMPOSE_FILE="docker/docker-compose-full.yml" + +# Ensure we're at project root and the compose files exist +[ -f ".env" ] || { echo "[!] run the script from project root" && exit 1; } +[ -f "$BACKEND_COMPOSE_FILE" ] || { echo "[!] backend compose file missing" && exit 1; } +[ -f "$FULL_COMPOSE_FILE" ] || { echo "[!] fullstack compose file missing" && exit 1; } + +while getopts "hfpq" OPTION; +do + case "$OPTION" in + h) + usage + exit 0 + ;; + f) + RUN_FULLSTACK=true + ;; + p) + PURGE_ARTIFACTS=true + ;; + q) + PURGE_ARTIFACTS=true + PURGE_ONLY=true + ;; + ?) + usage + exit 1 + ;; + esac +done + +if [ "$PURGE_ARTIFACTS" = true ] +then + echo "[+] purging old database artifacts" + docker stop qnote-psql + docker rm -f qnote-psql + docker volume rm -f qnote-data # Backend mode + [ -d "data" ] && sudo rm -rf data # Fullstack mode +fi + +if [ "$PURGE_ONLY" = true ] +then + exit 0 +fi + +[ "$( docker container inspect -f '{{.State.Status}}' qnote-psql )" = "running" ] || docker compose up qnote-psql -d &>/dev/null + +# Shutdown, rebuild, and restart relevant containers +if [ "$RUN_FULLSTACK" = true ] +then + echo "[+] running in fullstack mode" + docker compose stop qnote-server qnote-web + docker compose rm -f qnote-server qnote-web + docker compose --env-file .env -f "$FULL_COMPOSE_FILE" build + docker compose --env-file .env -f "$FULL_COMPOSE_FILE" up qnote-server qnote-web +else + echo "[+] running in backend mode" + docker compose stop qnote-server + docker compose rm -f qnote-server + docker compose --env-file .env -f "$BACKEND_COMPOSE_FILE" build + docker compose --env-file .env -f "$BACKEND_COMPOSE_FILE" up qnote-server +fi diff --git a/scripts/run_full_dev.sh b/scripts/run_full_dev.sh deleted file mode 100755 index 37048f1..0000000 --- a/scripts/run_full_dev.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash - -DEV_COMPOSE_FILE="docker-compose.yml" - -[ "$( docker container inspect -f '{{.State.Status}}' qnote-psql )" = "running" ] || docker compose up qnote-psql -d - -# Shutdown, rebuild, & restart -docker compose stop qnote-server qnote-web && docker compose rm -f qnote-server qnote-web -docker compose -f $DEV_COMPOSE_FILE build -docker compose -f $DEV_COMPOSE_FILE up qnote-server qnote-web