Alt etki alanını NGINX kullanarak Docker kapsayıcısına yönlendir


1

Centos 7.5 üzerine kurulu NGINX, 80 numaralı bağlantı noktasını dinliyor ve trafiği Gunicorn sunucusuna yönlendiriyorum. Bu sunucunun asıl amacı budur ve bunlar yerel olarak kurulmuş uygulamalardır, şu ana kadar hiçbir kapsayıcı yoktur.

Şimdi, Docker konteynerlerinde bazı hizmetleri çalıştırmak istiyorum ve farklı alt alan adlarına (veya belki de limanlarına) sahip olmak trafiği ilgili konteynerlere yönlendirmek istiyorum.

Özel bir örnek - SVN sunucusu

Tüm Docker konseptinde çok yeniyim ve bazı kaplar için özel dokümantasyon eksikliği beni gerçekten şaşırtıyor. Bu SVN sunucu kapsayıcısında biraz ilerleme kaydetmeyi başardım . Kullandığım komut bu: docker run -d --name svn-server -p 80:80 -p 3960:3960 -v /home/svn:/home/svn elleflorio/svn-server

Şu ana kadar sahip olduğum şey bu:

  • SVN sunucusuna http: // mysite / svn (80 numaralı bağlantı noktası) üzerinden erişilebilir .
  • Kap, yerel bir dizine başarıyla bağlanır ve depo silinirse bile depo verilerini tutar; bu harika bir şeydir.
  • Komutları kabın içinde çalıştırabilir, kullanıcılar oluşturabilir, depolar ekleyebilirim.

Sorunlar bunlar:

  • 80 numaralı limana da ihtiyaç duyduğundan NGINX'i durdurmak zorunda kaldım.
  • Konteynırın farklı bir portta çalışmasında başarılı olamadım, sadece -pparametreyi değiştirmeye çalıştığımda işe yaramadı ; SELinux'u geçici olarak etkisiz hale getirmeyi denedim, bu da yardımcı olmadı.
  • Kapsayıcıyı farklı bir bağlantı noktasında çalıştırabilirsem, trafiği bir alt etki alanından bu bağlantı noktasına yönlendirebilirim, ancak Docker kapsayıcılarıyla çalışmak için daha iyi bir uygulama olduğuna eminim.
  • Bunu işe almayı başarırsam - kabın ana bilgisayar yeniden başlatılmasından sonra yeniden başlatıldığından nasıl emin olabilirim?

Docker bölümünden emin değilim, ancak sorunun başlığı sıradan bir "ters proxy" Nginx config soruyor.
Grawity

@grawity, jargonla pek akıcı değilim. Bu cümleye biraz aşina oldum ama burada uygun olduğundan emin değildim.
Shovalt

Yanıtlar:


0

Konteynırınızı, yayınlanmış bağlantı noktası 80 yerine 8080 numaralı bağlantı noktasını kullanmak için kullanın docker run ... -p 8080:80 .... İlk sayı, ana bilgisayara bağlanabildiğiniz bağlantı noktasıdır, ikincisi ise konteynerdeki "yerel" bağlantı noktasıdır. Bu {host}: {container} kongre başka bir yerde kullanılıyor.

Geçerli kabı durdurduğunuzdan ( docker psçalışan kapları listelemek için) emin olun , aksi takdirde bağlantı noktasını 80 kullanan kalıcı bir kapınız olur.

Kaptaki önyüklemede kabı yeniden başlatmak için a docker run ....


Lütfen -p [port1]:[port2]ek açıklamayı açıklayabilir misiniz ? Birincisi konakçıya, ikincisi de konteynere mi başvuruyor?
Shovalt

Evet, ilk numara ana makineye bağlanabileceğiniz bağlantı noktası, ikincisi ise kabın üzerindeki "yerel" bağlantı noktasıdır. Bu {host}:{container}sözleşme başka yerlerde kullanılmaktadır (ciltler ...).
xenoid

Teşekkürler @ xenoid, bu işe yarıyor. Yorumunuzu cevabın kendisine ekledim.
Shovalt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.