Servisler API'si
Bir projenin içindeki servisleri (compose servisleri ve monorepo alt uygulamaları) yönetin — CRUD, compose'dan senkronizasyon, container eylemleri, drift çözümü ve ortam değişkenleri dahil.
Bir servis, bir projenin içindeki çalıştırılabilir bir birimdir: bir docker-compose yığınındaki bir container veya bir monorepo'daki bir alt uygulama. Her ikisi de aynı tabloda bulunur (kind ile ayrılır), bu nedenle bu API, servisleri listelemeyi ve düzenlemeyi, bunları bir docker-compose dosyasından senkronize etmeyi, container'larını başlatmayı/durdurmayı/yeniden başlatmayı, compose drift'ini çözmeyi ve servis başına ortam değişkenlerini ayarlamayı kapsar. dashboard'da bu, bir projenin Servisler sekmesidir; terminalden ise alaf server service komutudur.
Temel yol ve kimlik doğrulama
Her yol bir projenin altına yerleştirilmiştir — örneğinizle ilişkili olarak, /api/projects/:id/services altında, burada :id proje kimliğidir (örn. https://your-host/api/projects/proj_123/services). alaf server token create ile oluşturulmuş bir kişisel erişim token'ını bearer header olarak gönderin (Authorization: Bearer <token>). dashboard bunun yerine oturum çerezinizi kullanır. Tam kimlik doğrulama modeli için API genel bakışına ve izinler için güvenlik/kimlik doğrulama bölümüne bakın.
Self-hosted ve cloud
Bu modül hem self-hosted hem de Alaf Server Cloud'da mevcuttur. :id bir cloud projesi olduğunda istek şeffaf bir şekilde Alaf Server Cloud'a proxy edilir; yerel bir proje kendi örneğiniz tarafından sunulur.
Uç Noktalar
| Metot ve yol | İzin | Ne işe yarar |
|---|---|---|
GET /api/projects/:id/services | project:service:list | Bir projenin servislerini (compose servisleri / monorepo alt uygulamaları) listeler. |
POST /api/projects/:id/services | project:service:write | Bir projeye servis ekler. |
GET /api/projects/:id/services/containers | project:read | Bir projenin servisleri için çalışan container'ları listeler. |
POST /api/projects/:id/services/sync | project:service:write | Projenin docker-compose dosyasındaki servisleri servis tablosuna senkronize eder. |
GET /api/projects/:id/services/:serviceId | project:service:read | Bir servisi kimliğine göre alır. |
GET /api/projects/:id/services/:serviceId/logs | project:service:read | Bir servisin çalışma zamanı log'larını getirir (akışsız). |
GET /api/projects/:id/services/:serviceId/logs/stream | project:service:read | Bir servisin çalışma zamanı log'larını akış olarak sağlar. |
PATCH /api/projects/:id/services/:serviceId | project:service:write | Bir servisin yapılandırmasını günceller. |
DELETE /api/projects/:id/services/:serviceId | project:service:admin | Bir servisi siler (container'ını kaldırır). |
POST /api/projects/:id/services/:serviceId/drift/accept | project:service:write | Bu servis için yukarı akış docker-compose değişikliklerini kabul eder. |
POST /api/projects/:id/services/:serviceId/drift/keep | project:service:write | Bu servis için yerel düzenlemeleri yukarı akış docker-compose değişiklikleri üzerinde tutar. |
POST /api/projects/:id/services/:serviceId/start | project:service:write | Bu servisin container'ını başlatır. |
POST /api/projects/:id/services/:serviceId/stop | project:service:write | Bu servisin container'ını durdurur. |
POST /api/projects/:id/services/:serviceId/restart | project:service:write | Bu servisin container'ını yeniden başlatır. |
GET /api/projects/:id/services/:serviceId/env | project:service:read | Bir servisin ortam değişkenlerini listeler. |
PUT /api/projects/:id/services/:serviceId/env | project:service:write | Bir servisin ortam değişkenlerini değiştirir. |
Servis ekle
POST /api/projects/:id/servicesBir servis satırı bir birleşimdir: kind: "compose" container alanlarını (image, build, ports…) kullanırken, kind: "monorepo" alt uygulama build alanlarını (rootDirectory, framework…) kullanır. Her iki alan kümesi de kabul edilir ve isteğe bağlıdır; kind hangi alt kümenin doğruluk kaynağı olduğuna karar verir. Bilinmeyen anahtarlar reddedilir.
Prop
Type
Compose alanları (kind compose olduğunda kullanılır):
Prop
Type
Monorepo alt uygulama alanları (kind monorepo olduğunda kullanılır):
Prop
Type
curl -X POST https://your-host/api/projects/proj_123/services \
-H "Authorization: Bearer $ALAFSERVER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"db","kind":"compose","image":"postgres:16","ports":["5432:5432"]}'# CLI'dan aynı işlem:
alaf server service create -p my-stack db --image postgres:16 --port 5432:5432Servisi güncelle
PATCH /api/projects/:id/services/:serviceIdHer alan isteğe bağlıdır — yalnızca değişenleri gönderin. Oluşturma ile aynı compose ve monorepo alanlarını kabul eder, kind hariç: bir satırın türünü değiştirmek yıkıcı bir işlemdir, bu nedenle servisi silip yeni tür altında yeniden oluşturun.
curl -X PATCH https://your-host/api/projects/proj_123/services/svc_456 \
-H "Authorization: Bearer $ALAFSERVER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"restart":"unless-stopped","enabled":true}'docker-compose'dan senkronize et
Projenin docker-compose dosyasını okur ve servis tablosunu buna uyacak şekilde düzenler — servisleri ekler, günceller ve işaretler. Düzenlemeleriniz compose dosyasından farklılaştığında, etkilenen servisler drifted olarak işaretlenir, böylece bunları açıkça çözebilirsiniz (aşağıya bakın).
POST /api/projects/:id/services/syncalaf server service sync -p my-stack docker-compose.ymlCompose drift'ini çöz
Bir servisin depolanan yapılandırması yukarı akış docker-compose dosyasından farklılaştığında, drifted olarak işaretlenir. Servis başına bir çözüm seçin:
POST /api/projects/:id/services/:serviceId/drift/accept # yukarı akışı al, düzenlemelerinizi at
POST /api/projects/:id/services/:serviceId/drift/keep # düzenlemelerinizi tut, işaretlemeyi durduralaf server service drift accept -p my-stack web
alaf server service drift keep -p my-stack webContainer eylemleri
Tek bir servis için çalışan container'ı başlatın, durdurun veya yeniden başlatın. Bunlar, servisin aktif-deploy container'ı üzerinde işlem yapar.
POST /api/projects/:id/services/:serviceId/start
POST /api/projects/:id/services/:serviceId/stop
POST /api/projects/:id/services/:serviceId/restartalaf server service restart -p my-stack webTüm stack'teki çalışan container'ları listelemek için GET /api/projects/:id/services/containers (alaf server service containers -p my-stack) kullanın.
Ortam değişkenleri
GET .../env bir servisin ortam değişkenlerini listeler (gizli değerler maskelenir). PUT .../env bir ortam için tüm seti değiştirir — tutmak istediğiniz her değişkeni gönderin.
GET /api/projects/:id/services/:serviceId/env
PUT /api/projects/:id/services/:serviceId/envProp
Type
curl -X PUT https://your-host/api/projects/proj_123/services/svc_456/env \
-H "Authorization: Bearer $ALAFSERVER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"environment":"production","vars":[{"key":"DATABASE_URL","value":"postgres://…","isSecret":true}]}'# CLI'dan aynı işlem:
alaf server service env set -p my-stack web DATABASE_URL=postgres://… --env productionPUT değiştirir, birleştirmez
PUT .../env ortamın değişken setini tam olarak gönderdiğinizle üzerine yazar. Yalnızca birini değiştirmek istiyorsanız önce GET .../env ile mevcut değişkenleri alın — atladığınız her şey kaldırılır.
Görebileceğiniz hatalar
400 — geçersiz gövde
Payload doğrulama başarısız oldu (bilinmeyen anahtar, yanlış tür veya uzunluk sınırını aşan bir değer). Bilinmeyen anahtarlar doğrudan reddedilir — alan adlarını yukarıdaki tablolarla karşılaştırın. Oluşturma sırasında, kind: "monorepo" bir servis bir rootDirectory içermelidir.
Servis başına rotada 404
:serviceId bu projeye ait değil (veya silindi) ya da proje :id kuruluşunuzda değil. Geçerli kimlikleri almak için projenin servislerini GET /api/projects/:id/services ile listeleyin.
Deployments API
Derlemeleri tetikleyin, git'ten veya yüklenmiş bir klasörden deploy edin, ardından bir projenin sürümlerinin yaşam döngüsünü inceleyin, yeniden deploy edin, geri alın ve yönetin.
Alan Adları API'si
Bir projeye özel alan adları ekleyin, DNS'i önizleyin ve doğrulayın, ve SSL sertifikalarını yönetin.