API

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İzinNe işe yarar
GET /api/projects/:id/servicesproject:service:listBir projenin servislerini (compose servisleri / monorepo alt uygulamaları) listeler.
POST /api/projects/:id/servicesproject:service:writeBir projeye servis ekler.
GET /api/projects/:id/services/containersproject:readBir projenin servisleri için çalışan container'ları listeler.
POST /api/projects/:id/services/syncproject:service:writeProjenin docker-compose dosyasındaki servisleri servis tablosuna senkronize eder.
GET /api/projects/:id/services/:serviceIdproject:service:readBir servisi kimliğine göre alır.
GET /api/projects/:id/services/:serviceId/logsproject:service:readBir servisin çalışma zamanı log'larını getirir (akışsız).
GET /api/projects/:id/services/:serviceId/logs/streamproject:service:readBir servisin çalışma zamanı log'larını akış olarak sağlar.
PATCH /api/projects/:id/services/:serviceIdproject:service:writeBir servisin yapılandırmasını günceller.
DELETE /api/projects/:id/services/:serviceIdproject:service:adminBir servisi siler (container'ını kaldırır).
POST /api/projects/:id/services/:serviceId/drift/acceptproject:service:writeBu servis için yukarı akış docker-compose değişikliklerini kabul eder.
POST /api/projects/:id/services/:serviceId/drift/keepproject:service:writeBu servis için yerel düzenlemeleri yukarı akış docker-compose değişiklikleri üzerinde tutar.
POST /api/projects/:id/services/:serviceId/startproject:service:writeBu servisin container'ını başlatır.
POST /api/projects/:id/services/:serviceId/stopproject:service:writeBu servisin container'ını durdurur.
POST /api/projects/:id/services/:serviceId/restartproject:service:writeBu servisin container'ını yeniden başlatır.
GET /api/projects/:id/services/:serviceId/envproject:service:readBir servisin ortam değişkenlerini listeler.
PUT /api/projects/:id/services/:serviceId/envproject:service:writeBir servisin ortam değişkenlerini değiştirir.

Servis ekle

POST /api/projects/:id/services

Bir 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:5432

Servisi güncelle

PATCH /api/projects/:id/services/:serviceId

Her 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/sync
alaf server service sync -p my-stack docker-compose.yml

Compose 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 durdur
alaf server service drift accept -p my-stack web
alaf server service drift keep   -p my-stack web

Container 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/restart
alaf server service restart -p my-stack web

Tü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/env

Prop

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 production

PUT 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.

On this page