Files
shop-go/scripts/deploy.sh
T

46 lines
1.5 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "${ROOT_DIR}"
if ! command -v docker &>/dev/null; then
echo "Docker не найден. Сначала: sudo bash scripts/install-ubuntu.sh"
exit 1
fi
if ! docker compose version &>/dev/null; then
echo "Docker Compose plugin не найден."
exit 1
fi
if [[ ! -f .env ]]; then
cp .env.example .env
SECRET=$(openssl rand -hex 32)
DB_PASS=$(openssl rand -hex 16)
sed -i "s/your_random_secret_key_here/${SECRET}/" .env
sed -i "s/DB_PASSWORD=shop_secret/DB_PASSWORD=${DB_PASS}/" .env
sed -i "s/ADMIN_PASSWORD=change_me/ADMIN_PASSWORD=$(openssl rand -base64 18 | tr -d '/+=')/" .env
echo "Создан .env с автоматически сгенерированными паролями."
echo "Проверьте ADMIN_EMAIL и DOMAIN перед продакшеном."
fi
export APP_VERSION=$(git describe --tags --always 2>/dev/null || echo "dev")
export BUILD_TIME=$(date -u +%Y-%m-%dT%H:%M:%SZ)
docker compose pull --ignore-buildable 2>/dev/null || true
docker compose build app
docker compose up -d --force-recreate
echo ""
echo "Сервисы запущены."
IP=$(hostname -I | awk '{print $1}')
echo " Магазин: http://${IP}"
echo " Админка: http://${IP}/admin/login"
if [[ -f .env ]]; then
echo " Логин: $(grep '^ADMIN_EMAIL=' .env | cut -d= -f2-)"
echo " Пароль: $(grep '^ADMIN_PASSWORD=' .env | cut -d= -f2-)"
fi
echo ""
echo "Логи: docker compose logs -f"