Ana içeriğe geç

Docker ile Node.js Uygulaması Oluşturma

Bu Rehberde Ne Öğreneceksiniz?

Bu rehberde Node.js tabanlı bir uygulamayı

oaicite:0
ile konteyner haline getirmeyi öğreneceksiniz.
Amaç, uygulamayı taşınabilir ve güvenli bir yapıya kavuşturmaktır.

  • Node.js uygulaması için Docker imajı oluşturma
  • Multi-stage Dockerfile ile güvenli kurulum
  • Docker Hub üzerinden imaj paylaşma

Teknik Özet

Bu rehber, Ubuntu üzerinde çalışan bir

oaicite:1
(Express) uygulamasının Docker’a taşınmasını anlatır.
Sorun, ortam farkları ve manuel kurulum karmaşasıdır.

İzlenen adımlar:

  1. Proje dosyalarını hazırlama
  2. Dockerfile yazma
  3. Konteyner oluşturma
  4. Docker Hub üzerinden yeniden dağıtım

Ön Gereksinimler

  • Ubuntu 22.04+ bir sunucu
  • Sudo yetkili kullanıcı
  • Docker kurulu
  • Node.js ve npm kurulu
  • oaicite:2
    hesabı

1. Adım: Proje ve Bağımlılıkları Hazırlama

Proje dizinini oluşturun:

mkdir node_project && cd node_project
  • Bu komut uygulama için bir çalışma alanı oluşturur.

package.json dosyasını açın:


nano package.json
  • Bu dosya proje bilgilerini ve bağımlılıkları tanımlar.


{
"name": "nodejs-image-demo",
"version": "1.0.0",
"description": "Node.js Docker demo",
"author": "Rabisu Dev Team <[email protected]>",
"license": "MIT",
"main": "app.js",
"dependencies": {
"express": "^4.18.2"
}
}

  • Bağımlılıkları kurun:

npm install
  • Bu komut Express kütüphanesini indirir.

2. Adım: Node.js Uygulamasını Oluşturma

  1. Ana uygulama dosyasını oluşturun:

nano app.js
  • Bu dosya HTTP isteklerini yöneten Express sunucusunu başlatır.


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

const port = 8080;

app.get('/', (req, res) => {
res.send('Docker üzerinde çalışan Node.js uygulaması');
});

app.listen(port, () => {
console.log(`Uygulama $&#123;port&#125; portunda çalışıyor`);
});

  • Uygulamayı test edin:

node app.js

  • Tarayıcıdan erişin:

http://sunucu_ip:8080

3. Adım: Dockerfile Yazma (Multi-Stage)

  1. Dockerfile oluşturun:

nano Dockerfile
  • Bu dosya konteyner ortamını tanımlar.


# Build aşaması
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .

# Çalışma aşaması
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app /app
EXPOSE 8080
CMD ["node", "app.js"]

  • Bu yapı:

1. Daha küçük imaj üretir

2. Güvenliği artırır

3. Üretim için uygundur


4. Adım: .dockerignore Dosyası Oluşturma

  1. Gereksiz dosyaları hariç tutun:

nano .dockerignore

node_modules
npm-debug.log
Dockerfile
.dockerignore
  • Bu dosya build süresini kısaltır.

5. Adım: Docker İmajı Oluşturma ve Çalıştırma

  1. İmajı oluşturun:

docker build -t kullaniciadi/nodejs-demo .
  • Bu komut Docker imajını üretir.

Konteyneri başlatın:


docker run -d -p 80:8080 --name nodejs-demo kullaniciadi/nodejs-demo
  • Uygulamaya erişin:

http://sunucu_ip

6. Adım: Docker Hub Üzerinden Yeniden Dağıtım

  1. Docker Hub’a giriş yapın:

docker login

  1. İmajı yükleyin:

docker push kullaniciadi/nodejs-demo

  1. Başka bir sunucuda imajı çekin:

docker pull kullaniciadi/nodejs-demo
  • Bu yöntemle uygulamayı hızla çoğaltabilirsiniz.

Sıkça Sorulan Sorular (SSS)

1. Docker neden Node.js için tercih edilir? Ortam farklarını ortadan kaldırır ve dağıtımı kolaylaştırır.

2. Alpine imaj neden önerilir? Daha küçük boyut ve düşük güvenlik riski sunar.

3. Konteyner içindeki kod güncellenir mi? Hayır. İmaj yeniden oluşturulmalıdır.

4. Multi-stage build ne sağlar? Gereksiz dosyalar üretim imajına girmez.


Sonuç

Bu rehberle Node.js uygulamanızı taşınabilir, güvenli ve ölçeklenebilir hale getirdiniz. Docker sayesinde aynı imajı farklı sunucularda sorunsuz çalıştırabilirsiniz.

🚀 Bu yapıyı Rabisu Bulut altyapısında dakikalar içinde canlıya alabilirsiniz.