All-in-One Docker Kurulumu
Bu sayfa Apinizer'ın çekirdek modüllerinin Docker üzerinde kurulumunu tek yerde gösterir. Sıra önemli: önce Manager (kayıt + Environment), sonra Cache, sonra Worker. Integration sadece task-flow scheduler kullanılacaksa kurulur. API Portal ayrı bir sayfada kurulur — Manager kurulumundan sonra yapılır.
- Genel Bakış
- 1. API Manager
- 2. API Worker
- 3. API Cache
- 4. API Integration (Opsiyonel)
Apinizer Docker Hub üzerinde resmi imaj olarak yayınlanır. İmajlar Eclipse Temurin 25 üzerine kuruludur; entrypoint container memory limit'ini okuyup heap / direct memory / metaspace değerlerini otomatik ayarlar.
Hassas değerler (MongoDB URI, secret'lar) Docker akışında plaintext environment variable olarak gönderilir — konteyner, Linux paketindeki boot-time ENC(...) decrypt sürecini çalıştırmaz. Güvenli aktarım için Docker Secret (Compose / Swarm) veya Kubernetes Secret kullanın.
Tüm modülleri tek docker-compose.yml ile birlikte ayağa kaldırmak istiyorsanız:
5 modülün hep birlikte tek docker-compose.yml ile kurulduğu referans örnek
Önerilen Kurulum Sırası
- MongoDB (önceden kurulu olmalı — bkz. MongoDB Kurulumu)
- API Manager → MongoDB ile bağlantı doğrulanır, Mongock migration'ları çalışır
- Worker → Manager'dan Environment bilgisini alır
- Cache → Hazelcast cluster (Worker quota/OIDC/CB kullanacaksa)
- Integration (opsiyonel) → Quartz scheduler ayağa kalkar, Manager'a register edilir
- API Portal → Manager REST API'sine bağlanır, dokümantasyonu sunar
İmaj Konvansiyonu
Tüm imajlar apinizercloud/<modul> altında yayınlanır:
| Modül | İmaj |
|---|---|
| API Manager | apinizercloud/apimanager |
| API Portal | apinizercloud/apiportal |
| Worker | apinizercloud/worker |
| Cache | apinizercloud/cache |
| Integration | apinizercloud/integration |
Tag konvansiyonu
| Tag | Kanal | Not |
|---|---|---|
<MAJOR.MINOR.PATCH> (örn. 2026.04.5) | release | Production'a yükseltilebilir |
<MAJOR.MINOR.PATCH>.qa.<N> (örn. 2026.04.5.qa.1) | QA | Pre-release, değişebilir |
<MAJOR.MINOR.PATCH>-rc.<id> | release candidate | Donmuş, immutable |
<MAJOR.MINOR.PATCH>-SNAPSHOT | develop | Yuvarlanan, prod'da kullanmayın |
latest tag'i yayınlanmaz — daima açık bir versiyon tag'ine pin'leyin.
Apple Silicon (M1/M2/M3/M4) Üzerinde
İmajlar şu an yalnızca linux/amd64 için yayınlanır. Apple Silicon Mac'lerde Docker Desktop uyarı verir ("Image may have poor performance, or fail, if run via emulation"). Çözüm:
- Docker Desktop → Settings → General → "Use Rosetta for x86_64/amd64 emulation on Apple Silicon" seçeneğini açın. QEMU yerine Apple Rosetta ile çalışır, performans büyük oranda artar.
- Üretim için x86_64 Linux host kullanın.
Ortak Gereksinimler
Tüm modüller aynı MongoDB veritabanına bağlanır
Hangi modülün hangi portu kullandığını gösteren tablo
Güncelleme
Docker üzerinde güncelleme için: Docker Üzerinde Güncelleme
API Manager, Apinizer'ın yönetim düzlemidir: REST API, iş mantığı, Angular UI ve MongoDB üzerinde proxy/policy/environment kayıtlarını barındırır. Bu modülün başarıyla ayağa kalkması ve UI'da en az bir Environment tanımlanması, sonraki adımların (Cache, Worker) ön koşuludur.
Bu rehber Apinizer API Manager Docker imajının bir Linux host üzerinde nasıl çalıştırılacağını anlatır. İmaj uygulamayı, bağımlılıklarını ve OpenJDK 25 runtime'ını içinde taşır — host üzerinde Java gerekmez. Entrypoint, başlangıçta konteyner memory limit'ini okur ve heap / direct memory / metaspace değerlerini otomatik olarak seçer.
Hassas değerler (MongoDB URI, secret'lar) Docker akışında plaintext environment variable olarak gönderilir — konteyner Linux paketinde kullanılan boot-time ENC(...) decrypt sürecini çalıştırmaz. Güvenli aktarım için Docker Secret (Compose / Swarm) veya Kubernetes Secret kullanın.
Gereksinimler
- Docker Engine 24+ kurulu bir Linux x86-64 host (veya Docker Desktop)
docker.io(veyaapinizercloud/apimanagerimajını barındıran bir mirror) erişimi- Erişilebilir bir MongoDB (üretim için replica set önerilir)
- Manager'ı dışarı açacak boş bir TCP port (varsayılan
8080)
1. İmajı çekin
VERSION=2026.04.5
docker pull apinizercloud/apimanager:${VERSION}
Tag konvansiyonu için: Docker — Genel Bakış.
2. Yapılandırma
Zorunlu environment variable'lar (boş bırakılırsa konteyner başlangıçta exit eder):
| Değişken | Açıklama |
|---|---|
SPRING_DATA_MONGODB_URI | MongoDB connection string (örn. mongodb://user:pass@host:25080/?replicaSet=rs0&authSource=admin) |
SPRING_DATA_MONGODB_DATABASE | Veritabanı adı (örn. apinizer) |
SPRING_PROFILES_ACTIVE | prod (varsayılan — üretimde böyle kalsın) |
Opsiyonel:
| Değişken | Varsayılan | Açıklama |
|---|---|---|
SERVER_PORT | 8080 | Konteyner içi HTTP portu |
JAVA_OPTS | boş | Ek JVM bayrakları (tier varsayılanları ile birleşir) |
jvmOverride | false | true yapıldığında JAVA_OPTS tier varsayılanlarını ezer |
JHIPSTER_SLEEP | 0 | Başlangıç gecikme süresi (MongoDB aynı compose'da başlatılıyorsa kullanışlı) |
3. Konteyneri çalıştır
docker run -d \
--name apinizer-apimanager \
-p 8080:8080 \
--memory=4g \
-e SPRING_DATA_MONGODB_URI='mongodb://user:pass@mongo:25080/?authSource=admin' \
-e SPRING_DATA_MONGODB_DATABASE='apinizer' \
-e SPRING_PROFILES_ACTIVE=prod \
-v apinizer-apimanager-logs:/app/logs \
--restart unless-stopped \
apinizercloud/apimanager:${VERSION}
--memory=4g limit'i JVM tier auto-tuner tarafından okunur — vermezseniz JVM host'un tüm belleğini görür ve heap'i fazla büyütebilir. Manager'a gerçekten ayırmak istediğiniz değeri verin.
4. docker-compose (önerilen)
services:
apimanager:
image: apinizercloud/apimanager:2026.04.5
container_name: apinizer-apimanager
restart: unless-stopped
mem_limit: 4g
ports:
- "8080:8080"
environment:
SPRING_PROFILES_ACTIVE: prod
SPRING_DATA_MONGODB_DATABASE: apinizer
JAVA_OPTS: "-XX:+ExitOnOutOfMemoryError"
env_file:
- ./secrets/apimanager.env # SPRING_DATA_MONGODB_URI=… içerir
volumes:
- apimanager-logs:/app/logs
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:8080/management/health | grep -q '\"status\":\"UP\"'"]
interval: 30s
timeout: 5s
retries: 5
start_period: 90s
volumes:
apimanager-logs:
Başlatma:
docker compose up -d
docker compose logs -f apimanager
5. Doğrulama
curl -fsS http://127.0.0.1:8080/management/health
Beklenen: 200 OK. İlk başlangıçta Mongock migration'ları çalışır, veritabanı boyutuna göre 30–90 saniye sürebilir.
6. Operasyon
| Eylem | Komut |
|---|---|
| Durum | docker ps --filter name=apinizer-apimanager |
| Log (follow) | docker logs -f apinizer-apimanager |
| Yeniden başlat | docker restart apinizer-apimanager |
| Durdur | docker stop apinizer-apimanager |
| Shell | docker exec -it apinizer-apimanager sh |
7. Ağ
- Inbound: yalnızca
8080/tcpWorker/Portal node'larından ve admin kullanıcılarından erişilebilir olmalı. - Outbound: Manager MongoDB'ye ve yapılandırılmış backend servislere (LDAP, OIDC, SMTP) bağlanır. Steady state'te internet erişimi gerekmez.
- Çoklu konteyner kurulumlarda tüm Apinizer servislerini aynı user-defined Docker network'üne koyup service adıyla referans verin.