2016-03-20 27 views
0

Düğüm uygulamaları için basit bir PaaS oluşturmaya çalışıyorum (http://www.github.com/darrensmith/baseplatform) ve gerçekten garip bir davranış alıyorum.Aynı ana bilgisayarda birden çok Swaggerize örneğini nasıl çalıştırırım?

Temel olarak - ana makinenizi BasePlatform üzerinde çalıştırabilirsiniz ve 8080 numaralı bağlantı noktasında bir proxy sunucusunu http-proxy kullanarak ve bağlantı noktası 8180'de Swaggerize-express'in bir örneğini kullanarak başlatır. Başlangıçta 8080 numaralı bağlantı noktasından 8180'e kadar olan tüm istekleri proxy olarak bildirir. yeni uygulamalar yüklemek için API.

Bir uygulamayı yükleyebilir ve DNS'in aynı ana bilgisayara (sınama amacıyla localhost) işaret eden bir etki alanı adı belirtebilir ve bu etki alanı için alternatif bir bağlantı noktasında çalışan uygulamalara ilişkin proxy isteklerini gönderecektir. .

Bu yüzden, ikinci bir swaggerize-express uygulaması oluşturdum ve 8005 numaralı bağlantı noktasında çalışan BasePlatform'a yükledim. Ancak, 8005 numaralı bağlantı noktasında çalışan uygulama için otomatik olarak oluşturulan (http://localhost:8005/api/v1/api-docs) Swagger JSON'u görüntülemeye çalıştığımda Varsayılan uygulama için JS80 bağlantı noktası 8180.

Uygulamayı bağımsız olarak başlatırsam ve 8005 numaralı bağlantı noktasına ulaşırsam doğru JSON'u alırım.

Ana bilgisayarımın bir bağlantı noktasında çalışan bir düğüm işleminin, diğer tarafta çalışan düğüm işlemine nasıl müdahale ettiğini ve bazı içgörüyü nasıl aradığını anlamadım.

Not: Bu, yüklenen uygulamanın json'unu doğrudan başlatıldığı bağlantı noktasına vurmaya çalışıyorum. 8080 numaralı bağlantı noktasında görüntülemeyi denediğimde (proxy aracılığıyla) aynı davranışı alıyorum. Swaggerize tarafından otomatik olarak ele alınmayan statik rotalarım beklediğim gibi çalışıyorlar - sadece swaggerize işlenen rotaların arasında bir geçiş var gibi görünüyor.

Herhangi bir yardım çok takdir edilecektir!

cevap

0

Figured out out!

Ben örtük ana süreç (BasePlatform) çocuk süreci başlattığını o kadar şimdiki çalışma dizinini sol: böylece çocuk sürecinin Swaggerize yönlendirici yaparken

const fork = require('child_process').fork; 
app.locals.settings.deployedProcesses[oldAppId+'-'+latestDeployId] = fork('./deployments/'+oldAppId+'-'+latestDeployId+'/server.js'); 

swagger.yaml alarak oldu Ebeveyn sürecinin dosyası (kendi ana çalışma dizininde olduğu için).

const fork = require('child_process').fork; 
app.locals.settings.deployedProcesses[oldAppId+'-'+latestDeployId] = fork('server.js',[],{ 
    cwd: './deployments/'+oldAppId+'-'+latestDeployId 
}); 
:

Ben çocuk sürecinin bu geçerli çalışma dizinini ayarlamak için revize