Ana içeriğe geç

Docker — E2E durumu

Sonraki operatör beyanlı e2202ac yeterliliği Canlı E2E Kabul sayfasındadır. Bu sayfa daha önce yazılmış lab anlatımını korur.

Durum özeti

Kanıt Değer
IMPLEMENTED YES (Linux offline-image + Windows Docker betikleri ve deploy/docker/*)
STATIC / AUTOMATED Linux Docker offline paket / deploy / auto-update script testleri
LIVE E2E VALIDATED Linux Docker install BLOCKED / RETEST REQUIRED; Windows Docker RETEST REQUIRED

Linux Docker — offline prebuilt image (güncel üretim modeli)

Kanıt Değer
IMPLEMENTED YES
AUTOMATED TESTED YES (docker_deploy_test.sh, package_docker_linux_test.sh, auto_update_test.sh)
Offline paket / image / docker load / security LIVE PASS
Offline clean install LIVE PASS
Reboot recovery LIVE PASS
NO-OP update LIVE PASS
ForceRedeploy LIVE FAIL / RETEST REQUIRED
Rollback BLOCKED (ForceRedeploy düzeltmesi sonrası)
Linux Docker install (HostPort fix sonrası) LIVE PASS

ForceRedeploy canlı hata

sudo bash ./scripts/update.sh --force-redeploy check/migrate/compose/live/ready/metadata geçti ama container recreate edilmedi (Running; ID ve StartedAt değişmedi).

Kök neden: aynı image + aynı Compose ile docker compose up -d no-op’tur. --force-redeploy --force-recreate kullanmalıdır.

Bu düzeltmeden sonra retest edilmeden ForceRedeploy Live PASS değildir.

Canlı install engeli (HostPort false-positive)

Ubuntu host’ta 4242 boştu:

  • systemctl is-active iqv-integration-api → inactive
  • ss -lntp | grep ':4242 ' → socket satırı yok
  • Docker container yok

Kurucu yine HostPort 4242 is occupied / HostPort 4242 conflict dedi.

Kök neden: ss -ltnp dinleyici olmasa bile sütun başlığı yazabiliyor; preflight boş olmayan metni “port dolu” sandı. Gerçek port çakışması değildi.

Düzeltme: yalnızca gerçek TCP LISTEN satırı occupancy sayılır (ss -H / header filtresi). Stopped container metadata’sı canlı listener değildir.

Bu düzeltmeden sonra install retest edilmeden Live PASS işaretlenmez.

Önerilen üretim yolu:

  • Offline OCI docker save arşivi
  • Yalnızca harici MongoDB (operatör host/veritabanı; genel dokümanda özel lab IP yok)
  • Yapılandırılan host portları (örnek 4242:4242) Ubuntu lab API host’ta
  • Müşteri sunucusunda Go / Git / kaynak / registry / internet yok
  • API host’ta MongoDB kurulumu veya MongoDB container yok

Sonraki Ubuntu canlı test planı (operatör; burada çalıştırılmadı)

  1. Ubuntu lab API host’ta Docker Engine + Compose (paketten Docker kurulmaz).
  2. Offline paketi aktar (kaynak ağacı gerekmez).
  3. install.sh + harici URI + gerçek aktif actor ObjectID + port 4242.
  4. status.sh — External, actor=configured, live/ready, auto-update kapalı.
  5. Reboot — unless-stopped.
  6. Aynı paket update.sh → NO-OP.
  7. Yeni image → transactional update; --test-fail-at AfterComposeUp → snapshot rollback; metadata korunur; Mongo’ya dokunulmaz.
  8. Auto-update yalnızca güvenilir LAN manifest ile isteğe bağlı; varsayılan kapalı.

Linux Docker Live E2E PASS işaretlenmeden önce bu retest tamamlanmalıdır.


Bu geliştirme / Windows lab ortamında Docker daemon ile gerçek docker build / compose up / container health / host reboot E2E yapılmadı → NOT RUN / NOT E2E VALIDATED.

E2E öncesi tooling (otomatik): açık -EnvFile / --env-file, ayrı HostPort/ContainerPort, compose ${IQV_HOST_PORT}:${HTTP_PORT}, yalnızca HostPort çakışma kontrolü. Windows PowerShell DockerDeploy testleri: otomatik PASS. Canlı install hâlâ NOT E2E VALIDATED.

Windows Docker Live E2E — Attempt #1

Kanıt Değer
Durum LIVE E2E IN PROGRESS / RETEST REQUIRED
Genel PASS NO

Gözlenen PASS (gerçek host)

Adım Sonuç
Repository / explicit EnvFile PASS
Docker availability PASS
HostPort 4243 boş (native API 4242'de devam) PASS
External MongoDB URI validation PASS
SkipGitPull / compose seçimi / image tag PASS
Docker Compose config (4243→4242) PASS
Container → host.docker.internal:27017 TCP PASS

Detected and Fixed / Retest Required

Sorun Kök neden Düzeltme Retest
Docker test aşaması kesildi PowerShell 5.1 2>&1 + Stop → BuildKit stderr = NativeCommandError Merkezi Invoke-IQVNativeCommand (exit-code) RETEST REQUIRED
Compose config çıktısında secret sızıntısı Resolved config pipeline'a düştü config --quiet + redaction RETEST REQUIRED

Windows Docker Live E2E henüz PASS değildir.

Operasyon referansı: Docker kurulumu, Güncelleme ve geri alma.

Windows Docker Live E2E — Attempt #2

Kanıt Değer
Durum LIVE E2E IN PROGRESS / RETEST REQUIRED
Genel PASS NO

Failure öncesi PASS

Adım Sonuç
EnvFile resolution PASS
HostPort / ContainerPort (4243 / 4242) PASS
HostPort preflight (native 4242 conflict değil) PASS
External MongoDB validation PASS
SkipGitPull + AllowDirty PASS
Dirty image provenance (2c1590c-dirty) PASS

Failure

Konu Detay
Belirti config exit 125: unknown flag: --env-file
Kök neden --env-file compose kelimesinden önce → Docker root CLI
Yanlış docker --env-file <file> ...
Doğru docker compose --env-file <file> -f ... config --quiet

Detected / Fixed / Automated / Retest

Madde Durum
Detected YES (Attempt #2)
Fixed Invoke-IQVDockerCompose — compose her zaman ilk token
Automated regression YES
Live Retest Required YES

Windows Docker genel durumu: LIVE E2E IN PROGRESS / RETEST REQUIRED.

Operasyon referansı: Docker kurulumu, Güncelleme ve geri alma.

Lab retest notu

Kirli working tree için açık -AllowDirty gerekir (<sha>-dirty, source_dirty=true). -SkipGitPull dirty'ye izin vermez. Doğrudan http://ip:port kullanıyorsanız PUBLIC_BASE_URL'i HostPort ile hizalayın (installer rewrite etmez).

Windows Docker Live E2E — Attempt #3 hazırlığı (kontrollü rollback)

Evidence Value
Durum RETEST REQUIRED
Overall PASS NO
Live E2E NOT RUN (yalnız lab tooling)

Eklenen lab-only tooling (otomatik test edildi)

Madde Ayrıntı
-TestFailAt AfterComposeUp Compose up sonrası kontrollü hata; otomatik rollback E2E için
Immutable rollback snapshot Runtime image mutation öncesi çalışan API image ID → iqv-integration-api:rollback-<short-id>-<timestamp>
Same-tag ForceRedeploy güvenliği Rollback overwrite edilmiş target tag'e değil snapshot'a döner
MongoDB Container/volume rollback edilmez; Database rollback = NOT PERFORMED
Exit code Başarılı rollback sonrası update yine non-zero döner
Metadata Başarısız update deployment metadata'yı overwrite etmez
Snapshot cleanup Başarılı deploy veya başarılı rollback retag sonrası

Windows Docker kontrollü rollback yolu = RETEST REQUIRED (Live E2E PASS yazmayın; -TestFailAt AfterComposeUp lab retest tamamlanmalı).

Önerilen lab komutu (burada çalıştırılmadı)

powershell .\scripts\windows\docker\update.ps1 -SkipGitPull -AllowDirty -ForceRedeploy ` -EnvFile .\.env.docker.external -HostPort 4243 -ContainerPort 4242 ` -SkipTests -TestFailAt AfterComposeUp

Beklenen: non-zero exit, önceki API snapshot ile restore, Mongo dokunulmamış, /health/live + /health/ready sağlıklı.

Port çakışması çıkış kodu

Windows/Linux Docker ve native yükleyicilerde port conflict için ortak kod: 15 (EXIT_PORT_CONFLICT / EXIT_PORT).
Docker daemon yoksa Windows Docker betikleri 16 (EXIT_DOCKER_NA) ile çıkabilir.

Sonraki faz — Plan A: External MongoDB

API container → host.docker.internal / harici adres → host veya harici MongoDB.

# Adım Status
1 Prerequisites (Docker Engine / Compose) NOT E2E VALIDATED
2 External MongoDB erişilebilir NOT E2E VALIDATED
3 .env (external URI; secret log yok) NOT E2E VALIDATED
4 install (compose up) NOT E2E VALIDATED
5 container health / health/live / health/ready NOT E2E VALIDATED
6 container restart NOT E2E VALIDATED
7 host reboot NOT E2E VALIDATED
8 update NOT E2E VALIDATED
9 NO-OP update NOT E2E VALIDATED
10 rollback NOT E2E VALIDATED
11 config preservation NOT E2E VALIDATED
12 volume preservation (varsa named volumes) NOT E2E VALIDATED
13 uninstall (volumes opt-in silme politikası) NOT E2E VALIDATED

Henüz PASS yok.

Sonraki faz — Plan B: Bundled MongoDB

API container → Docker internal network → MongoDB container → persistent volume.

# Adım Status
1 Prerequisites NOT E2E VALIDATED
2 Bundled compose profile / stack NOT E2E VALIDATED
3 .env NOT E2E VALIDATED
4 install NOT E2E VALIDATED
5 API + Mongo container health NOT E2E VALIDATED
6 container restart NOT E2E VALIDATED
7 host reboot NOT E2E VALIDATED
8 update NOT E2E VALIDATED
9 NO-OP update NOT E2E VALIDATED
10 rollback NOT E2E VALIDATED
11 config preservation NOT E2E VALIDATED
12 Mongo volume persistence NOT E2E VALIDATED
13 uninstall (volume koruma / silme bayrakları) NOT E2E VALIDATED

Henüz PASS yok.

Platform notu

Platform Live E2E
Linux Docker NOT E2E VALIDATED
Windows Docker NOT E2E VALIDATED

İlgili