Bir uygulamayı Docker'a dönüştürmek, uygulamayı yürütmek için gereken tüm önkoşulların belirtilmesini ve ardından çeşitli makinelerle paylaşılabilecek özel bir Docker görüntüsü oluşturmak için Dockerfile'ın kullanılmasını içerir. Bir “Dockerizasyon” Node.js ” uygulaması tutarlılığı artırır ve geliştirici tarafında uygun hata ayıklama sağlar.
Önkoşullar
Bir “yerleştirmenin önkoşulları” Node.js ” uygulaması şunları içerir:
- Docker Kurulumu.
- Node.js Uygulamasının Temel Anlayışı.
Node.js Uygulaması Nasıl Dockerleştirilir?
A ' Node.js ” uygulaması aşağıdaki adımlarla dockerize edilebilir:
Adım 1: Bir “package.json” Dosyası oluşturun
Öncelikle tüm dosyaların yer alacağı yeni bir dizin oluşturun. Bu dizinde “ paket.json ” Uygulamayı bağımlılıklarıyla birlikte temsil eden dosya:
{'isim' : 'docker_web_app' ,
'versiyon' : '1.0.0' ,
'Tanım' : 'Docker'da Node.js' ,
'yazar' : 'İlk son ' ,
'ana' : 'sunucu.js' ,
'Kodlar' : {
'başlangıç' : 'düğüm sunucusu.js'
} ,
'bağımlılıklar' : {
'ifade etmek' : '^4.18.2'
} }
Adım 2: Bir “package-lock.json” Dosyası oluşturun
“package.json” dosyasında “ npm kurulumu ” cmdlet'i. Bu bir “oluşturacaktır” package-lock.json Docker imajına kopyalanan dosya şu şekilde:
npm düzenlemek
3. Adım: Sunucu Oluşturun
Bundan sonra bir “ sunucu.js ' kullanan bir web uygulamasını bildiren dosya Express.js ' çerçeve:
'kesin kullanın' ;const express = gerektirir ( 'ifade etmek' ) ;
sabit PORT = 8080 ;
sabit HOST = '0.0.0.0' ;
const uygulaması = ekspres ( ) ;
uygulama.get ( '/' , ( talep, res ) = > {
tekrar gönder ( 'Selam Dünya' ) ;
} ) ;
uygulama.dinle ( LİMAN, KONAK, ( ) = > {
konsol.log ( ' http'de çalışıyor: // ${HOST} : ${PORT} ' ) ;
} ) ;
Şimdi uygulamayı resmi bir Docker imajı aracılığıyla Docker konteyneri içerisinde yürütmenin metodolojilerine geçelim.
Adım 4: Docker dosyası oluşturun
Tüm dosyaları içeren aynı dizinde manuel olarak bir Docker dosyası oluşturun. Bu dosyaya aşağıdaki kod satırını yazın:
Düğümden: 18İŞ YÖNÜ / usr / kaynak / uygulama
Paketi KOPYALA * .json . /
npm'yi çalıştır düzenlemek
KOPYALA . .
ORTAYA ÇIKARMAK 8080
CMD [ 'düğüm' , 'sunucu.js' ]
Yukarıdaki kod parçacığında aşağıda verilen adımları uygulayın:
- İlk olarak, düğümün en son uzun vadeli destek sürümü 18'i, içinde yer alan temel görüntü olarak kullanın. Docker Merkezi .
- Bundan sonra görüntüdeki uygulama kodunu içerecek bir dizin oluşturun.
- Bu, uygulamanın çalışma dizinini temsil eder.
- Şimdi uygulama bağımlılıklarını “ npm ”.
- Not: Npm sürüm 4 veya daha eski bir sürüm kullanılıyorsa “package-lock.json” dosyası oluşturulmayacaktır.
- Şimdi “ kopyalayın paket.json ' dosya. Ayrıca uygulamanın kaynak kodunu Docker görüntüsünde ' KOPYALA ' talimat.
- “ ORTAYA ÇIKARMAK ”Uygulamanın 8080 numaralı bağlantı noktasına bağlanmasına izin verme talimatı.
- Son olarak, uygulamayı çalışma zamanını tanımlayan CMD aracılığıyla yürütmek için cmdlet'i tanımlayın. Burada, “ düğüm sunucusu.js Sunucuyu başlatmak için cmdlet kullanılacaktır.
Adım 5: Bir “.dockerignore” Dosyası Oluşturun
“.dockerignore” dosyasında bir “.dockerignore” dosyası oluşturun. Docker dosyası ” aşağıda verilen içeriği içeren dizin/klasör:
node_modulesnpm-debug.log
Bu içerik, sırasıyla yerel modüllerin ve hata ayıklama günlüklerinin Docker görüntüsüne kopyalanmasını önler.
Adım 6: Görüntüyü Oluşturun
Şimdi, Dockerfile'ı içeren dizinde, aşağıda belirtilen cmdlet'i kullanarak görüntüyü oluşturun:
liman işçisi yapısı. -T düğümler / düğüm-web-uygulaması
Bu cmdlet'te ' düğümler ” dizin adını ifade eder, dolayısıyla cmdlet'i buna göre belirtin ve “ -T ” flag görüntüyü etiketler.
Şimdi görüntüleri bu komutla listeleyin:
liman işçisi görselleri
Adım 7: Görüntüyü Çalıştırın
Aşağıda belirtilen cmdlet'i kullanarak görüntüyü yürütün/çalıştırın:
liman işçisi koşusu -P 49160 : 8080 -D düğümler / düğüm-web-uygulaması
Burada, “ -P ” bayrağı, genel bir bağlantı noktasını konteyner içindeki özel bir bağlantı noktasına yönlendirir ve “ -D ” flag, kabı bağımsız modda, yani arka planda çalıştırır.
Adım 8: Uygulamanın Çıktısını Oluşturun
Şimdi aşağıdaki komutları kullanarak uygulamanın çıktısını yazdırın:
liman işçisi notLiman işçisi günlükleri 77b1e3c8576e
Konteyner kabuğu içinde gezinmeye ihtiyaç varsa, ' yönetici ” cmdlet'i:
liman işçisi yönetici -BT 77b1e3c8576e / çöp Kutusu / darbe
Burada, ' 77b1e3c8576e ” yürütülen “ ile kopyalanabilen konteynerin kimliğini temsil eder. liman işçisi ps ” komutunu daha önce vermiştik.
Adım 9: Uygulamayı Test Etme
Uygulamayı test etmek için Docker'ın eşlediği uygulamanın bağlantı noktasını alın:
liman işçisi not
Yukarıdaki cmdlet'te Docker ' 8080 “konteyner içindeki limandan limana” 49160 ' makinede.
Adım 10: Uygulamayı Çağırma
Uygulamayı “ aracılığıyla çağırın kıvırmak ” cmdlet'ini yukarıda eşlenen bağlantı noktasına başvurarak ve gerekli değerleri girerek:
kıvırmak -Ben yerel ana bilgisayar: 49160
Adım 11: Uygulamayı Kapatın/Sonlandırın
Son olarak uygulamayı “” aracılığıyla kapatın. öldürmek ” cmdlet'i:
liman işçisi öldürmek 77b1e3c8576e
Ayrıca uygulamanın bu komutla durdurulup durdurulmadığını giriş değerleriyle doğrulayın:
kıvırmak -Ben yerel ana bilgisayar: 49160
Çözüm
A ' Node.js ' uygulaması, bir sunucu, bir docker dosyası, '.dockerignore' dosyası oluşturularak, görüntünün oluşturulup çalıştırılmasıyla, uygulamanın çıktısının oluşturulmasıyla ve uygulamanın test edilmesi, kapatılması ve durdurulmasının onaylanmasıyla dockerize edilebilir. Bu makalede, bir Node.js uygulamasının dockerleştirilmesi konusu ayrıntılı olarak ele alınmıştır.