Docker ile Linux Sunucularında Uygulama Dağıtımı
Docker ile Linux Sunucularında Uygulama Dağıtımı
Docker ile Linux Sunucularında Uygulama Dağıtımı, modern yazılım geliştirme ve dağıtım süreçlerinde yaygın bir yöntemdir. Docker, uygulamaların bağımlılıkları ile birlikte izole bir ortamda çalıştırılmasına olanak tanıyan bir konteynerleştirme platformudur. Linux sunucularında Docker kullanarak uygulama dağıtımının temel avantajları arasında taşıma kolaylığı, güvenilirlik ve kaynak verimliliği sayılabilir. Bu süreçle ilgili önemli kavramları ve adımları aşağıda bulabilirsin:
Docker ve Konteynerler Nedir?
Docker, uygulamaları konteyner adı verilen hafif, izole ortamlar içinde çalıştırır. Konteynerler, uygulamanın çalışması için gerekli olan her şeyi (kod, kütüphaneler, bağımlılıklar) içerir, ancak sanal makinelerden farklı olarak işletim sisteminin çekirdeğini paylaştıkları için daha az kaynak tüketirler.
- İmajlar (Images): Docker imajları, uygulamanın çalıştırılabilir paketleridir. İmajlar, Docker Hub gibi depolardan indirilebilir veya geliştiriciler tarafından oluşturulabilir.
- Konteynerler: İmajların çalışan örnekleridir. Bir konteyner başlatıldığında, imajın bir kopyası çalıştırılır.
Docker ile Uygulama Dağıtımının Avantajları
- Taşınabilirlik: Docker konteynerleri, bağımlılıklarıyla birlikte paketlendikleri için uygulamalar, aynı Docker imajı kullanılarak farklı ortamlarda (geliştirme, test, üretim) aynı şekilde çalıştırılabilir.
- Kaynak Verimliliği: Docker konteynerleri, aynı çekirdeği kullandıkları için sanal makinelerden daha az kaynak tüketir.
- Kolay Dağıtım: Docker ile bir uygulamanın dağıtımı, birkaç basit komutla yapılabilir. Bu, özellikle CI/CD (Sürekli Entegrasyon/Sürekli Dağıtım) süreçlerinde önemlidir.
- Versiyon Kontrolü: Docker imajları, uygulamaların farklı sürümlerinin kolayca yönetilmesini sağlar. Hangi sürümün çalıştığını veya hangi sürümün dağıtılacağını kontrol etmek oldukça basittir.
- Kapsayıcılık ve İzolasyon: Uygulamalar, birbirinden izole olarak çalıştırılır, bu da farklı uygulamaların birbirini etkilemesini engeller.
Docker ile Uygulama Dağıtımı Adımları
-
Dockerfile Oluşturma: Uygulamanın nasıl çalıştırılacağını tarif eden bir yapılandırma dosyası olan Dockerfile oluşturulur. Bu dosyada imajın temeli, bağımlılıkların nasıl kurulacağı ve uygulamanın nasıl başlatılacağı tanımlanır.
FROM node:14
WORKDIR /app
COPY . /app
RUN npm install
CMD ["npm", "start"]
- Docker İmajını Oluşturma: Dockerfile kullanılarak uygulama için bir imaj oluşturulur.
docker build -t my-app .
- Konteyner Başlatma: Oluşturulan imaj bir konteyner olarak başlatılır.
docker run -d -p 8080:8080 my-app
- Docker Registry'ye Push Etme: İmajlar Docker Hub veya özel bir registry'ye push edilerek diğer sunucularda dağıtım için kullanılabilir hale getirilir.
docker push my-app
- Linux Sunucusunda Uygulama Dağıtımı: Docker imajı Linux sunucusunda çalıştırılır. Sunucuya SSH ile bağlandıktan sonra imajı çekmek ve konteyneri başlatmak yeterlidir.
docker pull my-app
docker run -d -p 8080:8080 my-app
- Kapsayıcıların İzlenmesi ve Yönetimi: Docker, konteynerlerin durumunu izlemek, loglarını görmek ve gerektiğinde yeniden başlatmak için komutlar sağlar.
docker ps # Çalışan konteynerleri listeler
docker logs <container_id> # Logları görüntüler
docker stop <container_id> # Konteyneri durdurur
Docker Compose ile Uygulama Dağıtımı
Birden fazla servisin yer aldığı kompleks uygulamaları yönetmek için Docker Compose kullanılır. docker-compose.yml
dosyası ile birden fazla konteynerin bir arada nasıl çalıştırılacağı tanımlanır.
version: '3'
services:
web:
image: my-app
ports:
- "8080:8080"
db:
image: postgres
environment:
POSTGRES_PASSWORD: example
- Bu dosya ile web uygulaması ve PostgreSQL veritabanı aynı anda başlatılabilir:
docker-compose up
Sonuç
Docker ile Linux sunucularında uygulama dağıtımı, uygulamaları izole bir şekilde çalıştırarak, taşınabilir, hızlı ve kaynak verimli bir yapı sağlar. Hem küçük ölçekli projelerde hem de büyük mikroservis tabanlı mimarilerde yaygın olarak kullanılır.