Node.js Projelerini Docker’a Kurmak

Mehmet Demirel
2 min readApr 25, 2022

--

Herkese merhaba,

bu gün sizlerle Node.js projelerimizi Docker Engine içerisinde çalıştırmayı öğreneceğiz gelin başlayalım…

İlk olarak yapmamız gereken proje ortamımızı oluşturalım.

npm init -y

Şimdi kendimize serverımızı başlatacağımız main file oluşturalım. Tercihinize göre index.js/app.js/server.js main file oluşturun. Projemize Express.js dahil edelim.

npm i express

Ardından basit bir GET methodu yazmamız yeterli olacaktır.

const express = require('express');
const app = express();

app.get('/', (req, res) => {
res.send({
success: true,
message: "Hello World!"
});
});

app.listen(5001);
console.log(`Server Running on http://localhost:5001`);

package.json içerisinde start scripti oluşturmamız bizim için yeterli olacaktır.

"scripts": {
"start": "node server.js"
}

Şimdi gelin Postman ya da tarayıcımız ile kontrol edelim.

Serverımız istediğimiz gibi çalışıyor, şimdi yapmamız gereken bir DockerFile oluşturmak.

Projemizin içerisinde uzantısız DockerFile ve .dockerignore dosyalarını oluşturun ve DockerFile’ı aşağıda anlatacağım gibi ayarlamanız yeterli olacaktır.

# DockerFile 
FROM node:alpine # Bizim çalışacağımız image'i temsil eder
WORKDIR usr/bin/testApp # Projemizi kopyalayacağımız konum
COPY package*.json ./ # Uygulama bağımlılıkları
RUN npm install # Uygulama bağımlılıklarını indirir
COPY . . # Geri kalan klasör/dosya'larımızı kopyalar
EXPOSE 5001 # Çalıştıracağımız portu belirtir
CMD [ "npm", "start" ] # En son olarak bizim için uygulamayı ayağa kaldırır

.dockerignore file içerisine de kopyalanmasını istemediğimiz dosya ve klasör isimlerini ekleyelim.

node_modules 
npm-debug.log

Artık image oluşturmaya hazırız aşağıdaki komutu çalıştıralım.

docker build . -f DockerFile -t test-app

Build işlemi gerçekleştikten sonra docker images komutunu kullanarak imageleri görüntüleyelim.

Evet gördüğünüz üzere image’imiz çalıştırmak üzere hazır. Gelin image’imizi kaldıralım.

docker run -dp 5001:5001 test-app

Evet gördüğünüz üzere şuan projemiz Docker Engine içerisinde çalışmakta. 5001 portuna tekrar bir GET isteğinde bulunalım.

Projemizi başarılı bir şekilde Docker Engine içerisinde çalıştırdık :). Sonraki yazılarda görüşmek üzere.

--

--