83 lines
2.4 KiB
Bash
Executable File
83 lines
2.4 KiB
Bash
Executable File
#!/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."
|