Gyro Kapsayıcı'da ilk uygulamanızı yayınlayın: Docker imajı, port, sağlık kontrolü ve kopya
1. İmajınız platforma uygun mu?
| Kural | Neden / ne yapmalı? |
|---|---|
| Kök olmayan kullanıcı | Kapsayıcılar 10001 numaralı kullanıcıyla çalışır. USER 10001 (ya da başka bir yetkisiz kullanıcı) tanımlayın; dosya izinlerini buna göre verin. |
| 1024 ve üstü port | Yetkisiz kullanıcı 80/443'ü dinleyemez; 8080 gibi bir port kullanın. |
| Sürüm etiketi | latest yerine 1.4.2 gibi sabit bir etiket verin; geri alma ve tekrarlanabilir yayın için gereklidir. |
| Günlükler standart çıktıya | Uygulama loglarını stdout/stderr'e yazın; Loglar sayfası bunları gösterir. |
| Kalıcı disk yok | Yazılan dosyalar kapsayıcı yeniden başlayınca silinir (/tmp geçicidir, 512 MiB). Kalıcı veriyi Nesne Depolama'ya ya da ayrı bir veritabanına yazın. |
| Mimari | İmaj linux/amd64 olmalıdır. |
Ana süreci kök kullanıcı isteyen imajlarda servis "Başlatma ayarı hatası" (CreateContainerConfigError) ile durur. Çözüm: kök olmayan bir imaj kullanın ya da USER tanımlayın. Hazır, ayrıcalıksız imaja örnek: nginxinc/nginx-unprivileged.
2. Panelden servis oluşturma
- Hizmetlerim'den ortamınızı açın ve Servisler'e girin.
- Yeni servis'e basın.
- Formu doldurun:
| Alan | Ne yazılır? |
|---|---|
| Servis adı | Küçük harf, rakam, -; harfle başlar, en çok 40 karakter (ör. api). Adres: ad + kodunuz. |
| İmaj | docker.io için kullanici/uygulama:1.4.2, GitHub için ghcr.io/firma/uygulama:1.4.2, Gyro deposu için registry.ist.gyrohosting.com/<kodunuz>/uygulama:1.4.2. |
| Port | Uygulamanızın dinlediği port (ör. 8080). Dış dünyaya açılacaksa zorunlu. |
| Kopya | Çalışacak örnek sayısı. Dayanıklılık için 2 ya da daha fazla. |
| İşlemci / kopya, Bellek / kopya | Kopya başına kaynak (varsayılan 0,25 vCPU / 256 MB). |
| Sağlık kontrolü yolu | /healthz gibi HTTP yolu. Boşsa porta TCP bağlantısı yeterli sayılır. |
| İnternete açık (HTTPS adres) | İşaretlerseniz servis ad-kod.gyroapp.net adresini alır. İşaretlemezseniz yalnız ortam içinden http://ad ile erişilir. |
| Ortam değişkenleri | Her satıra ANAHTAR=DEĞER. Parola gibi değerleri bunun yerine gizli değer olarak ekleyin. |
| Komut (isteğe bağlı) | İmajın varsayılan komutuna argüman. |
- Oluştur ve başlat'a basın. Durum önce Dağıtılıyor, sonra Çalışıyor olur.
Sağlık kontrolü iki iş yapar: yeni sürümde örnek hazır olmadan trafik almaz (kesintisiz geçişin dayanağıdır) ve HTTP yolu verirseniz yanıt vermeyen örnek otomatik yeniden başlatılır. Mümkünse bir HTTP sağlık yolu tanımlayın.
3. Özel imajı (şifreli depo) çekme
İmajınız herkese açık değilse depo bilgisini bir kez tanımlayın:
- Düğüm Havuzu sayfasında Özel imaj deposu bölümünü açın.
- Depo adresi (ör.
ghcr.io), Kullanıcı adı ve Token / parola girin. Token'ın yalnız çekme (read) izni olsun. - Kaydet'e basın. Ortam başına bir özel depo tanımlanır; token şifreli saklanır ve bir daha gösterilmez.
Kendi imajlarınızı Gyro'nun deposunda tutmak için Gyro imaj deposu rehberine bakın; orada bilgileri ayrıca tanımlamanız gerekmez.
4. Komut satırından
gyro container service create 12345 --name api \
--image ghcr.io/firma/uygulama:1.4.2 --port 8080 \
--replicas 2 --cpu-m 250 --memory-mi 256 \
--health-path /healthz --public \
--env '{"MODE":"prod"}'
Servisi görmek ve izlemek için:
gyro container service list 12345
gyro container service get 12345 api
5. Yayından sonra
- Adres: Servis tablosundaki adrese tıklayın. İlk istekte hazır olması birkaç saniye alabilir.
- Durum etiketleri: Dağıtılıyor, Çalışıyor, Hata, Kapasite bekliyor, Durduruldu. Hata ya da bekleme varsa satırın altında nedeni ve çözüm önerisi görünür (Sık hatalar).
- Loglar: Loglar sayfasından servisinizi seçip çıktıyı görün (Loglar ve grafikler).
- Güncelleme: yeni imaj sürümü için Ölçekleme, güncelleme ve geri alma.
6. Sık sorulan sorular
Docker Compose ya da docker run ile aynı şeyi yapabilir miyim?
Her servis ayrı oluşturulur. docker run seçeneklerinin karşılıkları: port → Port, -e → Ortam değişkenleri, --restart → platform kendisi yeniden başlatır, -v (disk) desteklenmez.
İmajım 1 GB'tan büyük, sorun olur mu?
Çekme süresi uzar. İmajı küçültmek (çok aşamalı derleme, alpine/distroless) dağıtımı hızlandırır.
Aynı ortamda iki servis birbirine nasıl bağlanır?
İç adresle: http://diger-servis (80 numaralı port, hedef servisin portuna yönlenir). Hedef servisin internete açık olması gerekmez.
Servis adını sonradan değiştirebilir miyim?
Hayır. Yeni adla yeni servis oluşturup eskisini silin.
Sıradaki adım
Geri bildiriminiz için teşekkürler!