feat: enhance deploy script with improved flag handling and usage instructions
Test Suite / test (24.15.0) (push) Has been cancelled
Test Suite / test (24.15.0) (push) Has been cancelled
This commit is contained in:
@@ -2,50 +2,98 @@
|
||||
# deploy.sh – Bygg och starta om recipe-app
|
||||
# Kör från: /opt/containers/recipe-app/
|
||||
# Kräver: .env-fil i samma mapp
|
||||
#
|
||||
# Användning:
|
||||
# ./deploy.sh – bygg allt (backend + flutter + importer)
|
||||
# ./deploy.sh --backend – bygg bara backend
|
||||
# ./deploy.sh --flutter – bygg bara flutter
|
||||
# ./deploy.sh --importer – bygg bara importer
|
||||
# ./deploy.sh --seed – kör seed (körs ej per default)
|
||||
# ./deploy.sh --backend --seed – kombinera flaggor fritt
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
# ── Flaggor ──────────────────────────────────────────────────────────────────
|
||||
BUILD_BACKEND=false
|
||||
BUILD_FLUTTER=false
|
||||
BUILD_IMPORTER=false
|
||||
RUN_SEED=false
|
||||
BUILD_ALL=true # om inga specifika tjänster anges, bygg allt
|
||||
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--backend) BUILD_BACKEND=true; BUILD_ALL=false ;;
|
||||
--flutter) BUILD_FLUTTER=true; BUILD_ALL=false ;;
|
||||
--importer) BUILD_IMPORTER=true; BUILD_ALL=false ;;
|
||||
--seed) RUN_SEED=true ;;
|
||||
--help|-h)
|
||||
sed -n '/^# Användning:/,/^[^#]/p' "$0" | grep '^#' | sed 's/^# \?//'
|
||||
exit 0
|
||||
;;
|
||||
*) echo "Okänd flagga: $arg (--help för hjälp)"; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ "$BUILD_ALL" = true ]; then
|
||||
BUILD_BACKEND=true
|
||||
BUILD_FLUTTER=true
|
||||
BUILD_IMPORTER=true
|
||||
fi
|
||||
|
||||
# ── Validering ────────────────────────────────────────────────────────────────
|
||||
if [ ! -f ".env" ]; then
|
||||
echo "Fel: .env saknas. Kopiera .env.example och fyll i värdena:"
|
||||
echo " cp .env.example .env && nano .env"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ── Git pull ──────────────────────────────────────────────────────────────────
|
||||
echo "Hämtar senaste kod (recipe-app)..."
|
||||
git pull origin main
|
||||
|
||||
echo "Hämtar senaste kod (microservice-importer)..."
|
||||
(cd "$SCRIPT_DIR/../microservice-importer" && git pull origin main)
|
||||
|
||||
echo "Bygger images..."
|
||||
docker compose -f compose.yml -f compose.flutter.yml build
|
||||
# ── Bygger valda tjänster ─────────────────────────────────────────────────────
|
||||
COMPOSE="docker compose -f compose.yml -f compose.flutter.yml"
|
||||
SERVICES=""
|
||||
|
||||
[ "$BUILD_BACKEND" = true ] && SERVICES="$SERVICES recipe-api"
|
||||
[ "$BUILD_FLUTTER" = true ] && SERVICES="$SERVICES recipe-flutter"
|
||||
[ "$BUILD_IMPORTER" = true ] && SERVICES="$SERVICES importer-api"
|
||||
|
||||
echo "Bygger: ${SERVICES:-alla tjänster}..."
|
||||
# --pull=false hindrar Docker från att kontrollera nya versioner av basimages
|
||||
$COMPOSE build --pull=false $SERVICES
|
||||
|
||||
echo "Startar tjänster..."
|
||||
docker compose -f compose.yml -f compose.flutter.yml up -d
|
||||
$COMPOSE up -d
|
||||
|
||||
echo "Kör full seed (seed_all.sql)..."
|
||||
MARIADB_ROOT_PASSWORD=$(grep MARIADB_ROOT_PASSWORD .env | cut -d '=' -f2 | tr -d '"' | tr -d "'")
|
||||
MARIADB_DATABASE=$(grep MARIADB_DATABASE .env | cut -d '=' -f2 | tr -d '"' | tr -d "'")
|
||||
# ── Seed (opt-in) ─────────────────────────────────────────────────────────────
|
||||
if [ "$RUN_SEED" = true ]; then
|
||||
MARIADB_ROOT_PASSWORD=$(grep MARIADB_ROOT_PASSWORD .env | cut -d '=' -f2 | tr -d '"' | tr -d "'")
|
||||
MARIADB_DATABASE=$(grep MARIADB_DATABASE .env | cut -d '=' -f2 | tr -d '"' | tr -d "'")
|
||||
|
||||
echo "Väntar på att databasen är redo..."
|
||||
for i in $(seq 1 30); do
|
||||
if docker exec recipe-db mariadb-admin ping -h 127.0.0.1 -uroot -p"$MARIADB_ROOT_PASSWORD" --silent 2>/dev/null; then
|
||||
break
|
||||
echo "Väntar på att databasen är redo..."
|
||||
for i in $(seq 1 30); do
|
||||
if docker exec recipe-db mariadb-admin ping -h 127.0.0.1 -uroot -p"$MARIADB_ROOT_PASSWORD" --silent 2>/dev/null; then
|
||||
break
|
||||
fi
|
||||
echo " ...försök $i/30"
|
||||
sleep 2
|
||||
done
|
||||
|
||||
if [ -f "db/seeds/seed_all.sql" ]; then
|
||||
docker exec -i recipe-db mariadb -uroot -p"$MARIADB_ROOT_PASSWORD" "$MARIADB_DATABASE" \
|
||||
< db/seeds/seed_all.sql
|
||||
echo "Full seed klar."
|
||||
else
|
||||
echo "Ingen db/seeds/seed_all.sql hittades — hoppar över seed."
|
||||
fi
|
||||
echo " ...försök $i/30"
|
||||
sleep 2
|
||||
done
|
||||
|
||||
if [ -f "db/seeds/seed_all.sql" ]; then
|
||||
docker exec -i recipe-db mariadb -uroot -p"$MARIADB_ROOT_PASSWORD" "$MARIADB_DATABASE" \
|
||||
< db/seeds/seed_all.sql
|
||||
echo "Full seed klar."
|
||||
else
|
||||
echo "Ingen db/seeds/seed_all.sql hittades — hoppar över seed."
|
||||
fi
|
||||
|
||||
echo "Status:"
|
||||
docker compose ps
|
||||
$COMPOSE ps
|
||||
|
||||
Reference in New Issue
Block a user