Takip et

Üç Katmanlı Uygulamaları Docker ile Kapsayıcılaştırma: Pratik Bir Kılavuz

Üç Katmanlı Uygulamaları Docker ile Kapsayıcılaştırma: Pratik Bir Kılavuz

Merhaba! Fatih Soysal burada. Bu makalede, Docker’ın sunduğu olanakları kullanarak üç katmanlı (sunucu, uygulama, veritabanı) uygulamalarınızı nasıl kapsayıcılaştıracağınızı adım adım açıklayacağım. Öncelikle, üç katmanlı mimarinin ne olduğunu ve neden kapsayıcılaştırmanın önemli olduğunu anlamakla başlayalım.

Üç Katmanlı Mimari ve Kapsayıcılaştırmanın Önemi

Üç katmanlı mimari, bir uygulamayı üç bağımsız katmana ayırır: sunucu katmanı (örneğin, web sunucusu), uygulama katmanı (iş mantığını içeren) ve veritabanı katmanı. Bu ayrım, uygulamanın bakımını, ölçeklenebilirliğini ve güvenliğini kolaylaştırır. Ancak, farklı ortamlarda (geliştirme, test, üretim) bu katmanları tutarlı bir şekilde çalıştırmak zor olabilir. İşte burada Docker devreye giriyor. Docker, uygulamalarınızı ve bağımlılıklarını kapsayıcılar içinde paketleyerek, her katmanı bağımsız ve tutarlı bir şekilde çalıştırmanızı sağlar. Sonuç olarak, geliştirme, test ve üretim ortamlarınız arasında tutarlılık sağlanır ve dağıtım süreçleri büyük ölçüde kolaylaşır. Bu, geliştiricilerin işlerini daha verimli yapmalarına olanak tanır.

Adım Adım Docker ile Kapsayıcılaştırma

Şimdi, basit bir üç katmanlı uygulamayı Docker kullanarak kapsayıcılaştırma sürecini adım adım inceleyelim. Örneğimizde, Node.js ile yazılmış bir web uygulaması, Express.js çerçevesi ve PostgreSQL veritabanı kullanacağız. Öncelikle, her katman için ayrı Dockerfile’lar oluşturmamız gerekecek.

1. Web Sunucusu (Node.js):

Dockerfile dosyası:


FROM node:16

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000

CMD [ "node", "index.js" ]

Bu Dockerfile, Node.js tabanlı bir imaj oluşturur, uygulamayı kopyalar, bağımlılıkları yükler ve 3000 numaralı portu açar.

2. Uygulama Katmanı (Express.js):

Bu adımda, Node.js uygulamanızın kodunu yazmanız gerekecek. Uygulama, veritabanına bağlanmak ve verileri işlemek için gereken iş mantığını içerecektir. Basit bir örnek şu şekilde olabilir:


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

app.get('/', (req, res) => {
  res.send('Merhaba Dünya!');
});

app.listen(port, () => {
  console.log(Uygulama ${port} portunda çalışıyor!);
});

3. Veritabanı Katmanı (PostgreSQL):

PostgreSQL için Dockerfile oluşturmaya gerek yoktur; çünkü resmi PostgreSQL imajını kullanacağız. Bunun için sadece bir docker-compose.yml dosyası yeterli olacaktır.

Docker Compose ile Ortamı Kurmak

Tüm katmanları yönetmek için docker-compose.yml kullanacağız. Bu dosya, her bir kapsayıcının nasıl oluşturulacağını ve nasıl birbirine bağlanacağını tanımlar:


version: "3.9"
services:
  web:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
  db:
    image: postgres:13
    environment:
      - POSTGRES_USER=admin
      - POSTGRES_PASSWORD=admin
      - POSTGRES_DB=mydb

Bu dosya, web ve db adlı iki servis tanımlar. web servisi, bizim oluşturduğumuz Node.js uygulaması içindir ve db servisi ise PostgreSQL veritabanı içindir. depends_on ile web servisinin db servisinden bağımlı olduğunu belirtiyoruz. Böylece veritabanı çalışmadan web servisinin çalışmasını engellemiş oluyoruz. Daha sonra docker-compose up -d komutu ile kapsayıcıları başlatabiliriz.

Sonuç

Bu makalede, Docker kullanarak üç katmanlı bir uygulamayı nasıl kapsayıcılaştıracağınızı adım adım gösterdim. Docker, uygulamalarınızın geliştirme, test ve üretim ortamlarında tutarlı bir şekilde çalışmasını sağlar ve dağıtım süreçlerini kolaylaştırır. Daha fazla bilgi ve ipucu için fatihsoysal.com sitesini ziyaret edebilirsiniz. Umarım bu kılavuz size yardımcı olmuştur!

Ayrıca, Docker ve kapsayıcılaştırma hakkında daha fazla bilgi edinmek için şu kaynaklara göz atabilirsiniz:

#Etiketler: docker, kapsayıcılaştırma, üç katmanlı uygulama, containerization, three-tier application, microservices, uygulama mimarisi, node.js, express.js, postgresql, docker-compose, fatihsoysal


Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.