Dağıtım ve yönetim sürecini basitleştiren Docker'ın konteynerleştirme teknolojisini kullanarak Node.js REST API'nizi Docker'a dönüştürün.

Uygulamaları farklı ortamlarda dağıtma ve çalıştırma süreci, göz önünde bulundurulması gereken bir dizi faktör olduğundan, bir güçlük olabilir. farklı yazılım paketlerinin gerekli bağımlılıklarını ve belirli sürümlerini yapılandırmak için ortam değişkenlerini ayarlamak gibi.

Ancak, Docker'ın konteynerleştirme teknolojisini kullanarak, uygulamaları docker görüntüsündeki tüm gerekli bağımlılıklarla en az çabayla farklı ortamlarda devreye alabilirsiniz. Yani, herhangi bir yapılandırma yapma konusunda endişelenmenize gerek yok. Bu, uygulamaları farklı ortamlarda dağıtma ve çalıştırma sürecini çocuk oyuncağı haline getirir.

Docker Nedir?

Liman işçisi kapsayıcılarda bağımsız yürütülebilir bileşenler olarak çalıştırılabilen taşınabilir görüntüler olarak paketlemek için araçlar ve ortam sağlayan bir geliştirme platformudur.

Bu kaplar, uygulamanın kodunu ve uygulamanın farklı çalışma zamanı ortamlarında sorunsuz bir şekilde başarılı bir şekilde çalışması için gerekli bağımlılıkları oluşturur.

instagram viewer

Başlamadan önce yerel makinenize Docker'ı kurun. Resmi belgelerden platforma özgü ön koşulları ve kurulum talimatlarını kontrol edin.

Node.js REST API'si oluşturun

Başlamak, bir Node.js web sunucusu oluşturun.

Bu uygulamanın kodunu kendi içinde bulabilirsiniz. GitHub deposu.

Ardından, bu proje için gerekli paketleri kurun.

npm morgan pg knex'i kur

bu sayfa paketi bir PostgreSQL veritabanı ile bağlantı kurmak için kullanılır. diz eklemiÖte yandan, PostgreSQL ile etkileşim için basit bir API sağlar — SQL sorguları yazmak için kullanacaksınız.

Son olarak, kullanacağınız morgan, bir Docker kapsayıcısında çalışan uygulamanızın hatalarını ayıklamak ve izlemek için HTTP isteklerini ve yanıtlarını konsolda günlüğe kaydeden bir ara katman yazılımı.

Son olarak, açın index.js dosyasını açın ve bunun altındaki kodu ekleyin basit bir REST API uygular üç rota ile.

sabit ifade = gerekmek("ifade etmek")
sabit morgan = gerekmek("morgan")
sabit uygulama = ekspres()
sabit veri tabanı = gerekmek('./db')
sabit PORT = işlem.env. LİMAN || 5000

uygulama.kullan (morgan('dev'))
app.use (express.json())
app.use (express.urlencoded({ uzatılmış: doğru }))

uygulama.get('/', (req, res) => res.send('Selam Dünya!' ))

uygulama.get('/kullanıcılar', zaman uyumsuz (gerekli, res) => {
sabit kullanıcılar = beklemek db.select().from('kullanıcılar')
res.json (kullanıcılar)
})

uygulama.post('/kullanıcılar', zaman uyumsuz (gerekli, res) => {
sabit kullanıcı = beklemek db('kullanıcılar').sokmak({ isim: req.body.name }).geri dönen('*')
res.json (kullanıcı)
})

app.listen (BAĞLANTI NOKTASI, () => konsol.kayıt(`Sunucu PORT'ta:${PORT}`))

Veritabanı Bağlantısını Yapılandırma

REST API, Docker'ın PostgreSQL örneği ile etkileşime girer, ancak önce uygulamanızda veritabanı bağlantısını yapılandırmanız gerekir. Proje klasörünüzün kök dizininde bir db.js dosyasını açın ve aşağıdaki kodu ekleyin.

sabit diz = gerekmek("diz")
modül.exports = diz({
müşteri: "postgres",
bağlantı: {
ev sahibi: 'db',
kullanıcı: "deneme Kullanıcısı",
şifre: "şifrem123",
veri tabanı: "deneme Kullanıcısı",

},
})

Migrate.js ve seed.js Dosyalarını Ayarlayın

Bu iki dosya, veritabanında bir tablo oluşturmayı ve API aracılığıyla test verileriyle doldurmayı mümkün kılacaktır. Yeni bir klasör oluşturun, Kodlar, projenizin kök dizininde ve iki dosya ekleyin: geçiş.js Ve tohum.js.

İçinde geçiş.js dosya, aşağıdaki kodu ekleyin:

sabit veri tabanı = gerekmek('../db');
(zaman uyumsuz () => {
denemek {
beklemek db.schema.dropTableIfExists('kullanıcılar')
beklemek db.schema.withSchema('halk').Tablo oluştur('kullanıcılar', (tablo) => {
tablo.increments()
tablo.dize('isim')
})
konsol.kayıt("Kullanıcılar tablosu oluşturuldu!")
işlem.çıkış(0)
} yakalamak (hata) {
konsol.log (hata)
işlem.çıkış(1)
}
})()

Bu kod bir oluşturacak kullanıcılar otomatik artan kimlik sütunu ve isim Veritabanındaki sütun.

Sonraki, içinde tohum.js dosya, aşağıdaki kodu ekleyin:

sabit veri tabanı = gerekmek('../db');
(zaman uyumsuz () => {
denemek {
beklemek db('kullanıcılar').sokmak({ isim: "Test Kullanıcısı1" })
beklemek db('kullanıcılar').sokmak({ isim: "Kullanıcı 2'yi Test Et" })
konsol.kayıt("Sahte kullanıcılar eklendi!")
işlem.çıkış(0)
} yakalamak (hata) {
konsol.log (hata)
işlem.çıkış(1)
}
})()

Bu kod, iki kullanıcıyı PostgreSQL veritabanına ekleyecek olan eşzamansız bir işlev uygular.

Son olarak, bu komutları paket.json dosya.

"Kodlar": {
"başlangıç": "düğüm indeksi.js",
"göç": "düğüm betikleri/migrate.js",
"tohum": "düğüm betikleri/seed.js"

},

Yapılandırılmış bir istemciniz olmadığından, API'yi test etmek için iki dosyayı komut dosyası olarak çalıştırmanız gerekir. npm koşusu emretmek.

Bir Dockerfile Ayarlayın

Bir Docker dosyası, Docker motorunun bir Docker görüntüsü oluşturmak için ihtiyaç duyduğu talimatları tanımlar. Projenizin kök dizininde yeni bir dosya oluşturun ve adlandırın, liman işçisi dosyası. Ardından, Node.js uygulaması için bir Docker görüntüsü oluşturmak üzere aşağıdaki talimatları ekleyin.

İTİBAREN düğüm:16.3.0-alp3.13
İŞ YÖNÜ /app
KOPYALA paket*.json ./
KOŞMAK npm kurulum
KOPYALA. .
ORTAYA ÇIKARMAK8000
CMD [ "düğüm", "index.js" ]

Hadi parçalayalım:

  • İTİBAREN - Bu talimat, Docker kayıt defterinde bulunabilen Node.js görüntüsünün hafif bir sürümü olan Node.js Alpine görüntüsü olan uygulama için temel görüntüyü ayarlar.
  • İŞ YÖNÜ - setler /app çalışma dizini olarak dizin.
  • KOPYALA paket*.json./ - Docker'a, bu dosya adı biçimindeki tüm dosyaları geçerli dizinden şuraya kopyalaması talimatını verir: /app dosya.
  • KOŞMAK - görüntüyü yürütür ve oluşturur.
  • KOPYALA.. - kaynak dosyaları şuraya kopyalar: /app dosya.
  • ORTAYA ÇIKARMAK - bu, Docker'a kapsayıcı içindeki bir bağlantı noktasını dış ortama, bu durumda ana makineye maruz bırakması talimatını verir.
  • CMD - görüntüden Docker kapsayıcısı oluşturulduğunda yürütülecek komutu belirtir.

Docker Compose Dosyasını Oluşturun

Node.js uygulamasının Docker'ın PostgreSQL örneğiyle etkileşime girmesi için, iki uygulamanın aynı ağ ortamındaki Docker kapsayıcılarında çalışması gerekir.

Bu nedenle, kullanarak hem uygulamanın görüntüsünü hem de PostgreSQL örneğini tanımlamanız ve oluşturmanız gerekir. Docker Oluşturma — birden çok Docker kapsayıcısı oluşturmanıza ve yönetmenize olanak tanıyan bir araç.

Basitçe söylemek gerekirse, bir Docker Compose kullanarak uygulamanızı oluşturan hizmetleri, bu durumda Node.js REST API'sini ve PostgreSQL veritabanını tek bir birim olarak tanımlayabilirsiniz.

Yeni bir dosya oluşturun, docker-compose.yml, kök dizinde ve aşağıdaki kodu ekleyin:

sürüm:'3.9'

Hizmetler:
sunucu:
inşa etmek:.
bağlantı noktaları:
-'5000:5000'
şunlara bağlıdır:
-db
veri tabanı:
görüntü:"postgres"
bağlantı noktaları:
-'4321:5432'
çevre:
POSTGRES_PASSWORD:"şifrem123"
POSTGRES_USER:"deneme Kullanıcısı"
birimler:
-veri:/var/lib/postgresql/data

birimler:
veri:

Bu kod, iki Docker kapsayıcısı oluşturacak ve çalıştıracaktır. İlk konteyner, sunucu, Docker Compose, bu kapsayıcının görüntüsünü oluşturmak için Dockerfile'ı kullanır.

Ayrıca, sunucu kapsayıcısının şuna bağlı olduğunu belirtir: db konteyner. Anlamı, sunucu konteyner sonra başlatılmalıdır db onunla bağlantı kurmak için konteyner.

İkinci kapsayıcı, bir PostgreSQL veritabanı kapsayıcısıdır. Docker'ın görüntü kayıt defterindeki PostgreSQL görüntüsünden oluşturulacağı için bu kapsayıcı için bir Dockerfile belirtmeniz gerekmez.

Docker Görüntülerini Oluşturun

Görüntüleri oluşturmak ve iki kapsayıcıyı başlatmak için Docker Compose komutunu kullanın.

docker-oluştur -d

İşlem başarıyla tamamlandıktan sonra benzer bir yanıt görmelisiniz.

REST API'yi test edin

Docker kapsayıcısında çalışan REST API'yi test etmek için aşağıdaki komutu çalıştırın. PostgreSQL veritabanında bir tablo oluşturmalıdır.

docker exec docker_node-server-1 npm taşımayı çalıştır

Benzer bir yanıt görmelisiniz.

Docker Görüntülerini Paylaşma

Son adım, Node.js uygulamanız için Docker görüntüsünü Docker Hub'a göndermektir. Bu, projelerinizi GitHub'a aktarmaya benzer.

  • Başını aşmak Docker Hub'ı ve bir hesap için kaydolun ve kullanıcı panosunda oturum açın.
  • Sonra, tıklayın Depo Oluştur. Havuzunuzun adını girin ve görünürlüğünü şu şekilde ayarlayın: Halk veya Özel ve ardından tıklayın Yaratmak.
  • Uygulamanızın Docker görüntüsünü Docker Hub'a göndermek için öncelikle terminal üzerinden hesabınıza giriş yapmanız ve ardından kullanıcı adınızı ve şifrenizi girmeniz gerekir.
liman işçisi girişi
  • Ardından, Docker görüntünüzün adını bu biçimle eşleşecek şekilde güncelleyin: /. Bu değişikliği yapmak için aşağıdaki komutu çalıştırın:
 liman işçisi etiketi /
  • Son olarak, Docker resminizi itin.
 liman işçisi itme /< depo adı>

Docker'ı Geliştirmede Kullanma

Bu kılavuz, Docker'ın sunabileceği potansiyelin yalnızca bir kısmına değinmiştir. Ancak artık herhangi bir uygulamayı ve tüm bağımlılıklarını şu şekilde paketlemek için Docker'ın konteynerleştirme teknolojisini kullanabilirsiniz: farklı geliştirme ortamlarında ve ayrıca bulut gibi üretim ortamlarında devreye alınabilen görüntüler hıçkırık