Docker, konteynerleştirme sayesinde uygulama dağıtımını kolaylaştırır. docker build
ve docker run
komutları genellikle sıralı olarak kullanılırken, bunları birleştirmek özellikle geliştirme sırasında veya otomatikleştirilmiş iş akışlarında verimliliği önemli ölçüde artırabilir. Bu makale, bu komutları birleştirmenin verimli yöntemlerini ele almaktadır.
İçindekiler
docker build
vedocker run
‘ı Anlamak- Çift Ampersand Operatörü (
&&
) ile Komutları Birleştirme - Komut Değiştirme ile Komutları Birleştirme
- En İyi Uygulamalar ve Hususlar
docker build
ve docker run
‘ı Anlamak
Bu komutları birleştirmeden önce, bireysel işlevlerini netleştirelim:
docker build
: Bir Dockerfile’dan bir Docker imajı oluşturur. Dockerfile, dosyaları kopyalama, bağımlılıkları yükleme ve konteynerin giriş noktasını tanımlama dahil olmak üzere imajı oluşturmak için talimatlar sağlar. Çıktı, benzersiz bir kimlik veya etiketle tanımlanan yeni bir imajdır.docker run
: Mevcut bir Docker imajından bir konteyner oluşturur ve başlatır. İmaj kimliğini veya etiketini kabul eder ve portlar, birimler ve ortam değişkenleri gibi parametrelerin belirlenmesine olanak tanır. Konteyner, imajın çalışan bir örneğidir.
Ayrı yürütme yaygın olsa da, bu komutları birleştirmek otomasyonu ve komut dosyası yazmayı basitleştirir.
Çift Ampersand Operatörü (&&
) ile Komutları Birleştirme
En basit yaklaşım, çift ampersand (&&
) operatörünü kullanır. Bu, docker run
komutunun yalnızca docker build
başarılı bir şekilde tamamlanırsa (çıkış kodu 0) yürütülmesini sağlar. Bu, başarısız bir derlemeden bir konteyner çalıştırılmasını önler.
docker build -t my-app . && docker run my-app
Bu, geçerli dizindeki (.
) Dockerfile’dan “my-app” adlı bir imaj oluşturur. Başarı, bu yeni oluşturulan imajdan bir konteynerin yürütülmesini tetikler.
Komut Değiştirme ile Komutları Birleştirme
Komut değiştirme, docker build
çıktısının (örneğin, imaj kimliği) yakalanmasına ve docker run
‘da kullanılmasına olanak tanıyarak daha fazla esneklik sunar. Bu, derleme işlemi sırasında oluşturulan belirli etiketlere veya kimliklere ihtiyaç duyulduğunda özellikle yararlıdır.
IMAGE_ID=$(docker build -t my-app .) && docker run $IMAGE_ID
Burada, imaj kimliği IMAGE_ID
değişkeninde yakalanır. $(...)
kullanımı (ters tırnak işaretlerinden daha tercih edilir), okunabilirliği artırır ve iç içe geçmiş komutları destekler. Daha özlü bir sürüm şudur:
docker run $(docker build -t my-app .)
Bu, docker build
çıktısını doğrudan docker run
için argüman olarak kullanır.
En İyi Uygulamalar ve Hususlar
Komutları birleştirmek iş akışlarını basitleştirirken, bu en iyi uygulamaları göz önünde bulundurun:
- Hata Yönetimi: Olası derleme hatalarını yönetmek için sağlam hata yönetimi uygulayın. Çıkış kodlarını kontrol edin veya özel derleme komut dosyaları gibi daha gelişmiş teknikler kullanın.
- Günlük Kaydı: Hata ayıklama ve izleme için derleme ve çalışma süreçlerini günlüğe kaydedin. Bu, otomatikleştirilmiş ortamlardaki sorunları belirleme ve çözme açısından çok önemlidir.
- Karmaşıklık: Çok karmaşık derlemeler veya dağıtımlar için ayrı komutlar daha yönetilebilir ve hata ayıklaması daha kolay olabilir. Komutları birleştirmeden önce derleme sürecinizin karmaşıklığını göz önünde bulundurun.
- İmaj Etiketleme: Daha iyi organizasyon ve izlenebilirlik için her zaman açıklayıcı ve tutarlı imaj etiketleri kullanın.
Yöntemi dikkatlice seçerek ve bu en iyi uygulamaları uygulayarak, verimli ve sağlam konteynerleştirilmiş uygulama dağıtımları için birleştirilmiş Docker komutlarının gücünden yararlanabilirsiniz.