#!/usr/bin/env bash # # Deployment von mareike auf endeavour (KeyHelp-Server), siehe docs/implement-endeavour.md. # # Liegt auf dem Server als KOPIE unter /opt/mareike/bin/deploy.sh – nicht direkt aus src/ ausführen, # weil der git-Checkout sonst das laufende Skript austauscht. # # Aufruf (als root): # deploy.sh [REF] Tag, Branch oder Commit ausrollen (Default: main) # deploy.sh artisan … php artisan im laufenden app-Container # deploy.sh compose … docker compose mit der endeavour-Konfiguration (z. B. "compose logs -f") set -euo pipefail MAREIKE_BASE="${MAREIKE_BASE:-/opt/mareike}" MAREIKE_USER="${MAREIKE_USER:-mareike-docker}" SRC="$MAREIKE_BASE/src" export MAREIKE_ENV_FILE="$MAREIKE_BASE/shared/.env" export MAREIKE_STORAGE="$MAREIKE_BASE/storage" export MAREIKE_HTTP_PORT="${MAREIKE_HTTP_PORT:-8080}" export MAREIKE_DB_SOCKET_DIR="${MAREIKE_DB_SOCKET_DIR:-/run/mysqld}" MAREIKE_UID="$(id -u "$MAREIKE_USER")" MAREIKE_GID="$(id -g "$MAREIKE_USER")" export MAREIKE_UID MAREIKE_GID compose() { docker compose -f "$SRC/docker/endeavour/compose.yaml" "$@" } case "${1:-}" in artisan) shift compose exec app php artisan "$@" exit ;; compose) shift compose "$@" exit ;; esac REF="${1:-main}" if [[ ! -f "$MAREIKE_ENV_FILE" ]]; then echo "Fehlt: $MAREIKE_ENV_FILE (Vorlage: docker/endeavour/env.production.example)" >&2 exit 1 fi echo "==> Quellcode auf '$REF' bringen" git -C "$SRC" fetch --tags --prune --force origin if git -C "$SRC" show-ref --verify --quiet "refs/remotes/origin/$REF"; then git -C "$SRC" checkout --force -B "$REF" "origin/$REF" else git -C "$SRC" checkout --force --detach "$REF" fi git -C "$SRC" clean -fd echo "==> storage/ vorbereiten" for dir in \ "" \ app app/private app/public \ framework framework/cache framework/cache/data framework/sessions framework/views \ logs temp do install -d -m 0775 -o "$MAREIKE_USER" -g "$MAREIKE_GID" "$MAREIKE_STORAGE/$dir" done echo "==> Images bauen" compose build --pull echo "==> Datenbank migrieren" compose run --rm --no-deps app php artisan migrate --force echo "==> Container starten" compose up -d --remove-orphans compose exec -T app php artisan view:clear docker image prune -f > /dev/null echo "==> mareike $(cat "$SRC/version") ($(git -C "$SRC" rev-parse --short HEAD)) läuft."