Переглянути джерело

Финальные исправления перед деплоем

1. deploy.sh: синхронизирован с deploy-remote.sh
   - --env-file для docker compose
   - curl вместо wget для healthcheck
   - Убрано создание Docker secrets

2. docker-compose.yml: убран obsolete version

3. Все конфиги синхронизированы для production деплоя
neyrogovnarik 1 місяць тому
батько
коміт
da3f091189
2 змінених файлів з 5 додано та 19 видалено
  1. 5 17
      deploy/deploy.sh
  2. 0 2
      docker-compose.yml

+ 5 - 17
deploy/deploy.sh

@@ -87,30 +87,18 @@ if [ ${#missing[@]} -gt 0 ]; then
     exit 1
 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 ">>> Собираю и запускаю контейнеры..."
-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)
 # SSL на Synology, Caddy работает на HTTP (порт 80)
 echo ">>> Проверяю здоровье (ждём Caddy + миграции + старт)..."
 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)
         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

+ 0 - 2
docker-compose.yml

@@ -1,5 +1,3 @@
-version: "3.9"
-
 services:
   postgres:
     image: postgis/postgis:16-3.4-alpine