|
- #!/usr/bin/env bash
- set -Eeuo pipefail
-
- # Target server runtime installer. It only loads packaged Docker images and
- # starts docker compose; it does not build source code.
-
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- cd "$SCRIPT_DIR"
-
- DEPLOY_ENV="${DEPLOY_ENV:-emp-test}"
- PROJECT_NAME="${PROJECT_NAME:-$DEPLOY_ENV}"
- ENV_FILE="${ENV_FILE:-.env}"
- COMPOSE_FILE="${COMPOSE_FILE:-docker-compose.yml}"
- IMAGE_TAR="${IMAGE_TAR:-images.tar}"
-
- log() {
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"
- }
-
- die() {
- echo "ERROR: $*" >&2
- exit 1
- }
-
- need_cmd() {
- command -v "$1" >/dev/null 2>&1 || die "Missing command: $1"
- }
-
- need_cmd docker
-
- if docker compose version >/dev/null 2>&1; then
- DC=(docker compose)
- elif command -v docker-compose >/dev/null 2>&1; then
- DC=(docker-compose)
- else
- die "Missing docker compose"
- fi
-
- if [[ ! -f "$ENV_FILE" ]]; then
- cp .env.example "$ENV_FILE"
- die "Generated $ENV_FILE. Update passwords, PUBLIC_HOST and ports, then rerun: bash install.sh"
- fi
-
- if [[ ! -f "$COMPOSE_FILE" ]]; then
- die "Missing compose file: $COMPOSE_FILE"
- fi
-
- if [[ -f "$IMAGE_TAR" ]]; then
- log "Load images: $IMAGE_TAR"
- docker load -i "$IMAGE_TAR"
- else
- log "Image tar not found: $IMAGE_TAR. Compose will use local or remote images."
- fi
-
- log "Start deploy env: $DEPLOY_ENV, project: $PROJECT_NAME"
- "${DC[@]}" \
- --env-file "$ENV_FILE" \
- -f "$COMPOSE_FILE" \
- -p "$PROJECT_NAME" \
- up -d
-
- log "Current service status"
- "${DC[@]}" \
- --env-file "$ENV_FILE" \
- -f "$COMPOSE_FILE" \
- -p "$PROJECT_NAME" \
- ps
-
- log "Done. Visit http://PUBLIC_HOST:ADMIN_HOST_PORT from the configured .env values."
|