Skip to content

This project builds a secure microservice server with Docker, using isolated containers, a private network, and Nginx with HTTPS.

Notifications You must be signed in to change notification settings

deryaxacar/42-inception

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

42-Inception

Bu proje, Docker kullanarak mikroservis mimarisine uygun, izole ve güvenli bir sunucu altyapısı oluşturmayı amaçlar. Her servis, kendi container’ında çalışacak şekilde yapılandırılmıştır. Servisler yalnızca özel bir Docker ağı üzerinden iletişim kurar ve dış dünya ile olan bağlantılar Nginx reverse proxy üzerinden yönetilir. HTTPS desteği için TLS sertifikası OpenSSL ile oluşturulmuş ve yapılandırılmıştır. Böylece veri iletimi şifrelenmiş ve sistem genelinde güvenli bir yapı sağlanmıştır.

inception

İçindekiler 📚


🖥️ Sanal Mimari (Virtual Machine Architecture) Nedir?

  • Fiziksel donanım üzerinde çalışan bir hypervisor yardımıyla, birden fazla sanal makine (VM) oluşturulur.
  • Her sanal makine kendi işletim sistemi ile birlikte çalışır.
  • Donanım seviyesinde izolasyon sağlar.

Özellikleri:

  • Ağırdır, daha fazla kaynak kullanır.
  • Daha güvenlidir.
  • Her VM'de ayrı işletim sistemi çalışabilir.

Hypervisor, fiziksel donanım ile sanal makineler arasında bir köprü görevi görür. Sanal makinelerin (VM) her biri, kendi işletim sistemine ve uygulamalarına sahipmiş gibi çalışır. Ancak aslında bu sistemler, hypervisor tarafından paylaştırılan kaynaklarla (CPU, RAM, disk vb.) çalışır.


img


Not: Sanal makina üzerinde çalışan işletim sistemi arkaplanda çalışan hipervisordan haberdar değildir. Sanal makina fiziksel bir makina gibi davranır.


📦 Konteyner Mimari (Container Architecture) Nedir?

  • Uygulamalar, aynı işletim sistemini paylaşan, ancak birbirinden izole çalışan konteynerler içinde çalışır.
  • İzolasyon, işletim sistemi çekirdeği (kernel) düzeyinde sağlanır (namespaces, cgroups).
  • Konteynerler hızlı başlar, hafiftir.

Özellikleri:

  • Kaynak kullanımı azdır.
  • Başlatma süresi çok kısadır.
  • Uygulama geliştirme ve dağıtımı için idealdir.

img


Konteynerlar Teknolojilerinde ise işletim sistemi kernelına eklenen featureler (özellikler) kullanılarak işlem izolasyonu sağlanmaktadır. Bu işlem izolasyonu sayesinde aynı işletim sistemi üzerinde birbirinden bağımsız konteynerler oluşturulabilmektedir.


Kernel Nedir?

Kernel, şletim sisteminin "çekirdeğidir". Bilgisayarın donanımı ile yazılımı arasında köprü görevi görür. Yani:

  • Bellek yönetimi
  • Dosya sistemi
  • Ağ erişimi
  • İşlem yönetimi
  • Donanımla doğrudan iletişim

gibi temel işleri kernel yapar.

img

örnek:

  • Sen bir programda print("Merhaba") yazarsın,
  • Bu işlem işletim sistemine gider,
  • İşletim sistemi bu talebi kernel aracılığıyla ekrana iletir.

🐳 Docker Nedir?

Docker, uygulamaları ve bu uygulamaların bağımlılıklarını, işletim sisteminden bağımsız bir şekilde çalıştırılabilir hale getiren, açık kaynaklı bir containerization (kapsayıcılama) platformudur. Temel amacı, bir yazılımın geliştirildiği ortamda nasıl çalışıyorsa, aynı şekilde başka bir ortamda da sorunsuz çalışmasını sağlamaktır.


🔧 Docker'ın Temel Bileşenleri

  • Docker Engine: Docker container’larını oluşturmak, yönetmek ve çalıştırmak için kullanılan çekirdek bileşendir.
  • Docker Image: Bir uygulamanın çalışması için gerekli tüm kodları, bağımlılıkları ve konfigürasyonları barındıran şablondur.
  • Docker Container: Image’ların çalıştırılabilir hale gelmiş, izole edilmiş halidir.
  • Dockerfile: Image’ları otomatik olarak inşa etmek için kullanılan betik dosyasıdır.
  • Docker Compose: Birden fazla container’ı aynı anda yönetmeye yarayan araçtır (genellikle docker-compose.yml dosyası ile yapılandırılır).

Image Nedir?

Docker image (imaj), bir container'ın çalıştırılabilmesi için gerekli olan tüm dosya sistemini, bağımlılıkları ve yapılandırmaları barındıran bir şablondur. Her image, katmanlı bir yapıdadır ve bu image'lardan container'lar oluşturulur.

img


Volume Nedir?

Docker volume, container’lar ile host sistemi arasında veri paylaşımı sağlamak için kullanılır. Container silinse bile volume’lar kalıcıdır. Bu sayede veri kaybı olmadan işlemler devam eder. Örneğin bir veritabanının verileri volume içerisinde saklanarak container yeniden başlatıldığında kaybolmaz.

kısaca: img


Kullanılan Servisler

Inception projesinde aşağıdaki servisler kurulup yapılandırılmıştır:

  • MariaDB: WordPress için veritabanı hizmeti sağlar. Kalıcı veri için volume kullanılmalıdır.
  • WordPress: Dinamik içerik yönetim sistemi olarak çalışır ve MariaDB ile bağlantılıdır.
  • Nginx: Reverse proxy olarak yapılandırılır ve HTTPS desteği sağlamak için SSL sertifikalarıyla birlikte çalışır.

Proje Kapsamı

Inception projesinde, bizden docker-compose.yml dosyası ile yönetilen üç konteyner oluşturmamız bekleniyor: MariaDB, WordPress ve NGINX. Her bir konteyner, kendine ait bir Dockerfile kullanılarak inşa edilecek (build edilecek). Projenin amacı, bu servislerin birbirleriyle entegre çalıştığı, ayağa kalktığında tamamen işlevsel bir web uygulaması ortamı oluşturmaktır.

img


2025 | Created by Derya ACAR

Releases

No releases published

Packages

No packages published