2015-11-15 22 views
6

Dev ve üretim ortamımı oluşturmak için docker'ı kullanmayı planlıyorum. Django tabanlı uygulama yapıyorum. dev OnDocker üretimde mi?

Ben tüm yerel kapları Uyuz docker-compose kullanın. Güzel ve kullanışlı bir çözüm. Ben Django, 3 kereviz kuyrukları, rabbitmq, 2 postgresql DBs çalıştırın.

Ancak üretim ortamım oldukça farklı. Silah ve nginx kullanmam gerek. Ayrıca, DB'ler AWS RDS kullanılarak çalıştırılacaktır. Elbette Django uygulaması farklı ayarlar dosyası veya daha fazla env vars gibi daha fazla şey gerektirir.

Bunu nasıl böleceğimi düşünüyorum. Orada da docker-compose mu olmalıyım? Bu, dev ve prod için ayrı dosyalar gerektirecektir, belki de daha fazla aşama için vb. Jenkins kullanarak, çekin, tümünü kullanarak oluşturmayı yeniden başlatın?

Ya da doğrudan docker komutları çalıştırmak için yanıtlayıcı 'kullanmalıdır? Ama sonra benim devimin canlı ile aynı olduğuna ve davranışını tahmin etmenin zor olduğuna dair bir güvencem yok.

Ben tüm ortamlarda oluşturma dosyaları çalışan fikir gibi, ama farklı ortamlar için birden fazla dosya koruyarak iyi bir fikir olup olmadığından emin değilim. Dev daha az env vars ve daha az yapılandırma gerektirir. Env dosyasını, hepsini üretime ayarlamak için kullanabilirim. Ama canlı ayarlarımı repoda tutmalı mıyım? Önceden provizyon yaparken tüm env varsayı ayarlıyordum ve bu ayrı bir süreçti. Şimdi provizyon ve dağıtım aynı görünüyor mu? Belki de bu Docker ile yoldur?

+2

İdeal olarak, Dev ve Prod arasındaki tek fark ölçek ve veriye erişim olmalıdır. Docker sürüsü, üretimde aynı iş akışına sahip olmanızı sağlayan EC2'de çalıştırılabilir. RDS kullanıyorsanız, ortam değişkenleri kullanarak DB URL ve kimlik bilgileri kapsayıcılara enjekte edilebilir. Bu, Docker kapsayıcılarında bağımsız çalışan veritabanı (lar) kullanarak Dev'de simüle edilebilir. –

+0

Üçüncü projede üst üste her ortam için ayrı dosyalar kullanıyorum. – Opal

cevap