ci(deploy): standardize docker compose env file usage across scripts
Test Suite / backend-pr-quick (push) Has been skipped
Test Suite / quick-import-pr-quick (push) Has been skipped
Test Suite / backend-full (push) Successful in 2m33s
Test Suite / flutter-quality (push) Failing after 1m16s

- Added --env-file .env to all docker compose commands for consistent environment variable loading
- Added MISTRAL_API_KEY validation in deploy.sh with fatal error if missing
- Added --force-recreate flag to recipe-api restarts in disable/enable receipt trace scripts
- Added .env file existence check in rebuild_flutter.sh
- Added API service recreation logic in deploy.sh when backend/importer services are updated
This commit is contained in:
Nils-Johan Gynther
2026-05-24 20:30:28 +02:00
parent 26c217e0eb
commit 7713eb2fa7
5 changed files with 16 additions and 6 deletions
+9 -1
View File
@@ -143,7 +143,10 @@ if [ "$BUILD_BACKEND" = true ] || [ "$RUN_SEED" = true ] || [ "$RUN_CLEAN_DATABA
fi fi
export SKIP_MIGRATION export SKIP_MIGRATION
COMPOSE_CMD=(docker compose -f compose.yml -f compose.flutter.yml) COMPOSE_CMD=(docker compose --env-file .env -f compose.yml -f compose.flutter.yml)
MISTRAL_API_KEY="$(read_env_value MISTRAL_API_KEY)"
[ -n "$MISTRAL_API_KEY" ] || fatal "MISTRAL_API_KEY saknas i .env"
# ── Git pull ────────────────────────────────────────────────────────────────── # ── Git pull ──────────────────────────────────────────────────────────────────
info "Hämtar senaste kod (recipe-app)..." info "Hämtar senaste kod (recipe-app)..."
@@ -178,6 +181,11 @@ fi
info "Startar tjänster..." info "Startar tjänster..."
"${COMPOSE_CMD[@]}" up -d "${COMPOSE_CMD[@]}" up -d
if [ "$BUILD_BACKEND" = true ] || [ "$BUILD_IMPORTER" = true ]; then
info "Återskapar API-tjänster för att säkra uppdaterade env-variabler..."
"${COMPOSE_CMD[@]}" up -d --force-recreate recipe-api importer-api
fi
# ── Databasrensning (opt-in) ────────────────────────────────────────────────── # ── Databasrensning (opt-in) ──────────────────────────────────────────────────
if [ "$RUN_CLEAN_DATABASE" = true ]; then if [ "$RUN_CLEAN_DATABASE" = true ]; then
CLEAN_SQL_FILE="backend/prisma/maintenance/clean-database.sql" CLEAN_SQL_FILE="backend/prisma/maintenance/clean-database.sql"
+1 -1
View File
@@ -19,6 +19,6 @@ fi
echo "RECEIPT_TRACE_DECISIONS=0 satt i .env" echo "RECEIPT_TRACE_DECISIONS=0 satt i .env"
echo "Startar om recipe-api utan full trace..." echo "Startar om recipe-api utan full trace..."
docker compose -f compose.yml -f compose.flutter.yml up -d recipe-api docker compose --env-file .env -f compose.yml -f compose.flutter.yml up -d --force-recreate recipe-api
echo "Klart." echo "Klart."
+2 -2
View File
@@ -19,11 +19,11 @@ fi
echo "RECEIPT_TRACE_DECISIONS=1 satt i .env" echo "RECEIPT_TRACE_DECISIONS=1 satt i .env"
echo "Bygger och startar om recipe-api..." echo "Bygger och startar om recipe-api..."
docker compose -f compose.yml -f compose.flutter.yml up -d --build recipe-api docker compose --env-file .env -f compose.yml -f compose.flutter.yml up -d --build --force-recreate recipe-api
mkdir -p logs mkdir -p logs
LOG_FILE="logs/receipt_decisions_$(date +%Y%m%d_%H%M%S).log" LOG_FILE="logs/receipt_decisions_$(date +%Y%m%d_%H%M%S).log"
echo "Startar loggning till $LOG_FILE" echo "Startar loggning till $LOG_FILE"
echo "Tryck Ctrl+C för att avsluta loggströmmen." echo "Tryck Ctrl+C för att avsluta loggströmmen."
docker compose -f compose.yml -f compose.flutter.yml logs -f recipe-api | tee "$LOG_FILE" docker compose --env-file .env -f compose.yml -f compose.flutter.yml logs -f recipe-api | tee "$LOG_FILE"
+3 -1
View File
@@ -2,7 +2,7 @@
set -Eeuo pipefail set -Eeuo pipefail
APP_DIR="${1:-/opt/containers/recipe-app}" APP_DIR="${1:-/opt/containers/recipe-app}"
COMPOSE_FILES=(-f compose.yml -f compose.flutter.yml) COMPOSE_FILES=(--env-file .env -f compose.yml -f compose.flutter.yml)
SERVICE="recipe-flutter" SERVICE="recipe-flutter"
log() { echo "[flutter-rebuild] $*"; } log() { echo "[flutter-rebuild] $*"; }
@@ -18,6 +18,8 @@ if [ ! -f "compose.yml" ] || [ ! -f "compose.flutter.yml" ]; then
fail "compose.yml eller compose.flutter.yml saknas i $APP_DIR" fail "compose.yml eller compose.flutter.yml saknas i $APP_DIR"
fi fi
[ -f ".env" ] || fail ".env saknas i $APP_DIR"
log "Bygger om $SERVICE" log "Bygger om $SERVICE"
docker compose "${COMPOSE_FILES[@]}" build "$SERVICE" docker compose "${COMPOSE_FILES[@]}" build "$SERVICE"
+1 -1
View File
@@ -7,7 +7,7 @@ trap 'echo "[reset][ERROR] Rad ${LINENO}: kommando misslyckades: ${BASH_COMMAND}
# Config # Config
# ---------------------------------------- # ----------------------------------------
APP_DIR="${1:-/opt/containers/recipe-app}" APP_DIR="${1:-/opt/containers/recipe-app}"
COMPOSE_FILES=(-f compose.yml -f compose.flutter.yml) COMPOSE_FILES=(--env-file .env -f compose.yml -f compose.flutter.yml)
DB_CONTAINER="recipe-db" DB_CONTAINER="recipe-db"
IMPORTER_DIR="../microservice-importer" IMPORTER_DIR="../microservice-importer"
SEED_FILE="db/seeds/seed_all.sql" SEED_FILE="db/seeds/seed_all.sql"