|
@@ -87,30 +87,18 @@ if [ ${#missing[@]} -gt 0 ]; then
|
|
|
exit 1
|
|
exit 1
|
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
-# 4. Create Docker secrets if in Swarm mode
|
|
|
|
|
-create_docker_secrets() {
|
|
|
|
|
- if docker info --format '{{.Swarm.LocalNodeState}}' 2>/dev/null | grep -q "active"; then
|
|
|
|
|
- echo ">>> Swarm mode detected, creating Docker secrets..."
|
|
|
|
|
- printf "%s" "$DB_PASSWORD" | docker secret create db_password - 2>/dev/null || docker secret rm db_password && printf "%s" "$DB_PASSWORD" | docker secret create db_password -
|
|
|
|
|
- printf "%s" "$REDIS_PASSWORD" | docker secret create redis_password - 2>/dev/null || docker secret rm redis_password && printf "%s" "$REDIS_PASSWORD" | docker secret create redis_password -
|
|
|
|
|
- printf "%s" "$JWT_SECRET" | docker secret create jwt_secret - 2>/dev/null || docker secret rm jwt_secret && printf "%s" "$JWT_SECRET" | docker secret create jwt_secret -
|
|
|
|
|
- printf "%s" "$JWT_REFRESH_SECRET" | docker secret create jwt_refresh_secret - 2>/dev/null || docker secret rm jwt_refresh_secret && printf "%s" "$JWT_REFRESH_SECRET" | docker secret create jwt_refresh_secret -
|
|
|
|
|
- printf "%s" "$S3_SECRET_KEY" | docker secret create s3_secret_key - 2>/dev/null || docker secret rm s3_secret_key && printf "%s" "$S3_SECRET_KEY" | docker secret create s3_secret_key -
|
|
|
|
|
- fi
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-create_docker_secrets
|
|
|
|
|
|
|
+# 4. Docker secrets не используем (конфигурация через env vars)
|
|
|
|
|
|
|
|
-# 5. Build and deploy
|
|
|
|
|
|
|
+# 5. Build and deploy with --env-file
|
|
|
echo ">>> Собираю и запускаю контейнеры..."
|
|
echo ">>> Собираю и запускаю контейнеры..."
|
|
|
-docker compose -f deploy/docker-compose.prod.yml up -d --build
|
|
|
|
|
|
|
+docker compose --env-file "$ENV_FILE" -f deploy/docker-compose.prod.yml up -d --build --remove-orphans
|
|
|
|
|
|
|
|
# 6. Health check (Caddy -> backend -> migrations)
|
|
# 6. Health check (Caddy -> backend -> migrations)
|
|
|
# SSL на Synology, Caddy работает на HTTP (порт 80)
|
|
# SSL на Synology, Caddy работает на HTTP (порт 80)
|
|
|
echo ">>> Проверяю здоровье (ждём Caddy + миграции + старт)..."
|
|
echo ">>> Проверяю здоровье (ждём Caddy + миграции + старт)..."
|
|
|
for i in $(seq 1 60); do
|
|
for i in $(seq 1 60); do
|
|
|
- # Check Caddy health (port 2019 metrics endpoint)
|
|
|
|
|
- if docker compose -f deploy/docker-compose.prod.yml exec -T caddy wget -q --spider http://localhost:2019/metrics 2>/dev/null; then
|
|
|
|
|
|
|
+ # Check Caddy health (port 2019 metrics endpoint) - curl есть в alpine
|
|
|
|
|
+ if docker compose -f deploy/docker-compose.prod.yml exec -T caddy curl -sf http://localhost:2019/metrics >/dev/null 2>&1; then
|
|
|
# Caddy is up, check backend through Caddy (HTTP, SSL на Synology)
|
|
# Caddy is up, check backend through Caddy (HTTP, SSL на Synology)
|
|
|
HEALTH=$(curl -sf "http://localhost/api/v1/health" 2>/dev/null || curl -sf http://localhost:8080/api/v1/health 2>/dev/null || echo '{"status":"fail"}')
|
|
HEALTH=$(curl -sf "http://localhost/api/v1/health" 2>/dev/null || curl -sf http://localhost:8080/api/v1/health 2>/dev/null || echo '{"status":"fail"}')
|
|
|
if echo "$HEALTH" | grep -q '"ok"'; then
|
|
if echo "$HEALTH" | grep -q '"ok"'; then
|