Blogchevron_rightSunucu Yönetimichevron_rightDocker Konteynerlarında Çevresel Değişkenler: Kapsamlı Rehber

Docker Konteynerlarında Çevresel Değişkenler: Kapsamlı Rehber

S
Serversium
calendar_today24 Mayıs 2026
schedule5 dk okuma
Docker Konteynerlarında Çevresel Değişkenler: Kapsamlı Rehber

Docker Konteynerlarında Çevresel Değişkenler: Kapsamlı Rehber

Çevresel değişkenler (environment variables), Docker konteynerlarının çalışma zamanında alması gereken yapılandırma değerlerini taşıyan temel mekanizmalardır. Uygulamalarınızın farklı ortamlarda (geliştirme, test, üretim) tutarlı şekilde çalışmasını sağlayan bu değişkenler, modern mikroservis mimarilerinin vazgeçilmez bir parçası haline gelmiştir. Docker volume yapılandırması gibi konfigürasyon araçlarıyla birlikte kullanıldığında, konteynerlarınız tamamen taşınabilir hale gelir.

Docker'da Çevresel Değişkenlerin Önemi

Çevresel değişkenler, konteynerlaştırılmış uygulamalar için kritik öneme sahiptir. Statik yapılandırma dosyalarının aksine, environment variable'lar konteyner yeniden oluşturulmadan değerlerin değiştirilmesine olanak tanır. Docker'ın 2023 verilerine göre, kurumsal kullanıcların %87'si üretim ortamlarında çevresel değişkenlere güvenmektedir.

Neden Environment Variables Kullanılmalı?

  • Taşınabilirlik: Aynı imaj farklı ortamlarda farklı değerlerle çalışabilir
  • Güvenlik: Hassas bilgiler (API anahtarları, şifreler) kod deposunda saklanmaz
  • Esneklik: Konteyner yeniden build edilmeden yapılandırma değiştirilebilir
  • 12-Factor App: Modern uygulama mimarisinin temel prensiplerinden biridir

Docker Environment Variables Nasıl Ayarlanır?

Docker'da çevresel değişkenleri ayarlamanın birden fazla yöntemi bulunmaktadır. Her yöntemin avantajları ve kullanım senaryoları farklıdır.

Dockerfile ile ENV Kullanımı

Dockerfile'da ENV komutu ile sabit değerler tanımlanabilir. Bu yöntem, varsayılan değerleri imaja gömmek için idealdir:

FROM node:18-alpine
ENV NODE_ENV=production
ENV APP_PORT=3000
ENV DATABASE_URL=postgres://localhost:5432/myapp

Dockerfile'da tanımlanan değişkenler, konteyner oluşturulduğunda otomatik olarak ayarlanır. Ancak bu yöntem, hassas bilgiler için önerilmez çünkü imaj geçmişi incelenerek bu değerler görülebilir.

docker run Komutu ile -e Bayrağı

Çalışma zamanında environment variable eklemek için -e bayrağı kullanılır:

docker run -e APP_ENV=production -e DB_PASSWORD=secret123 myapp:latest

Birden fazla değişken için kısayol:

docker run --env-file .env myapp:latest

Bu yöntem, Ansible ile sunucu yapılandırma otomasyonu süreçlerinizle entegre edilebilir ve CI/CD pipeline'larında dinamik değerler sağlayabilir.

Docker Compose ile Ortam Değişkenleri

Docker Compose, çoklu konteyner uygulamaları için ideal bir yapılandırma sunar:

version: '3.8'
services:
  web:
    image: myapp:latest
    environment:
      - NODE_ENV=production
      - DB_HOST=postgres
    env_file:
      - ./config/production.env
  
  postgres:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}

Docker Compose, özel bulut altyapılarında çalışan konteyner orkestrasyonu için de yaygın olarak kullanılmaktadır.

Çevresel Değişkenlerin Uygulama İçinde Okunması

Docker konteynerlarında çevresel değişkenler, uygulama tarafından standart yöntemlerle okunabilir. Farklı programlama dillerinde kullanım örnekleri:

Node.js Örneği

const dbHost = process.env.DB_HOST || 'localhost';
const dbPort = process.env.DB_PORT || 5432;
console.log(`Veritabanı bağlantısı: ${dbHost}:${dbPort}`);

Python Örneği

import os

api_key = os.environ.get('API_KEY', 'default_key')
debug_mode = os.environ.get('DEBUG', 'false').lower() == 'true'

PHP Örneği

$dbHost = getenv('DB_HOST') ?: 'localhost';
$appEnv = $_ENV['APP_ENV'] ?? 'development';

PHP sürüm güncelleme süreçlerinde, environment variable'ların doğru okunması için PHP-FPM konfigürasyonunun kontrol edilmesi önemlidir.

Production En İyi Uygulamaları

Üretim ortamlarında çevresel değişken yönetimi, güvenlik ve bakım açısından dikkatli bir yaklaşım gerektirir.

.env Dosyaları Kullanımı

Yerel geliştirme ortamında .env dosyası kullanımı yaygındır:

# .env dosyası
DB_PASSWORD=gizli_sifre_123
API_KEY=xxx-yyy-zzz
REDIS_URL=redis://cache:6379

.env dosyası .gitignore'a eklenmelidir:

echo ".env" >> .gitignore

Secret Yönetimi

Hassas veriler için Docker Secrets veya harici secret yönetim araçları kullanılmalıdır:

Yöntem Açıklama Kullanım Senaryosu
Docker Secrets Swarm mode'da şifrelenmiş depolama Docker Swarm kullanan projeler
HashiCorp Vault Dış secret yönetim servisi Kurumsal ortamlar, mikroservisler
AWS Secrets Manager Bulut tabanlı secret yönetimi AWS üzerinde çalışan konteynerler
Kubernetes Secrets K8s native secret yönetimi Kubernetes orchestrator kullanımı

Bu secret yönetimi yaklaşımları, sunucu güvenliği stratejilerinizin önemli bir parçası olmalıdır.

Sık Yapılan Hatalar ve Çözümleri

1. Hassas Verilerin Dockerfile'da Saklanması

Hatalı:

ENV API_KEY=secret123  # Güvensiz!

Doğru:

# Çalışma zamanında verilir
docker run -e API_KEY myapp:latest

# veya secret kullanılır
echo "$API_KEY" | docker secret create api_key -

2. Varsayılan Değer Eksikliği

Uygulamalar çökmemek için varsayılan değerler içermelidir:

// Kötü örnek
const dbUrl = process.env.DB_URL;  // undefined olabilir

// İyi örnek
const dbUrl = process.env.DB_URL || 'postgres://localhost:5432/dev';

3. Ortam Değişkenlerinin Tutarsız Kullanımı

Tüm ortamlar için aynı değişken adları kullanılmalıdır. MySQL slow query log yapılandırmasında olduğu gibi, veritabanı bağlantı ayarları tüm ortamlarda tutarlı olmalıdır.

Örnek Senaryolar ve Uygulamalar

Çoklu Ortam Yapılandırması

Farklı ortamlar için ayrı .env dosyaları oluşturulabilir:

# .env.development
DEBUG=true
LOG_LEVEL=debug
DB_HOST=localhost

# .env.production
DEBUG=false
LOG_LEVEL=error
DB_HOST=prod-db.example.com

# .env.test
DEBUG=true
LOG_LEVEL=debug
DB_HOST=test-db.example.com

Redis Entegrasyonu

Cache yapılandırması için environment variables:

docker run -e REDIS_HOST=redis-server \
           -e REDIS_PORT=6379 \
           -e REDIS_TLS=true \
           myapp:latest

Bu yapılandırma, Redis object cache kullanımıyla WordPress performansını artırmak için de kullanılabilir.

Webhook ve API Entegrasyonları

Harici servisler için API anahtarları environment variable ile yönetilir:

docker run -e STRIPE_API_KEY=sk_live_xxx \
           -e SENDGRID_API_KEY=SG.xxx \
           -e TWILIO_AUTH_TOKEN=xxx \
           payment-service:latest

Docker Environment Variables Performans İpuçları

Environment variable kullanımında performans optimizasyonları:

  1. Az sayıda değişken kullanın: Çok fazla environment variable, konteyner başlatma süresini uzatabilir
  2. Değerleri önbelleğe alın: Sık kullanılan değerler uygulama başlangıcında okunup değişkende saklanabilir
  3. Validation ekleyin: Gerekli değişkenlerin mevcut olduğunu uygulama başında kontrol edin
  4. Monitoring kurun: Environment variable değişikliklerini izlemek için ELK Stack kullanılabilir

Sonuç ve Öneriler

Docker konteynerlarında çevresel değişkenler, modern uygulama geliştirme süreçlerinin temel yapı taşlarından biridir. Doğru kullanıldığında uygulamalarınızın taşınabilirliğini, güvenliğini ve yönetilebilirliğini artırır. Ancak hassas verilerin korunması, tutarlı yapılandırma ve uygun secret yönetimi konularında dikkatli olunmalıdır.

Production ortamlarında environment variable yönetimi için Docker Secrets, HashiCorp Vault veya bulut tabanlı secret servisleri kullanmanızı öneriyoruz. Geliştirme süreçlerinizde Docker CI/CD pipeline'larını entegre ederek environment variable'ların otomatik yönetimini sağlayabilirsiniz.

library_booksBenzer İçerikler

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber
Sunucu Yönetimi
calendar_today5 Nisan 2026
schedule5 dk

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber

Cloud sunucular, dinamik kaynak dağıtımıyla işletmelerin kesintisiz büyümesini sağlar. Avantajlardan karşılaştırmalara tüm detaylar bu rehberde yer alıyor.

S
Serversiumarrow_forward
Linux vs Windows Sunucu: Hangisi Projeye Uygun?
Sunucu Yönetimi
calendar_today6 Nisan 2026
schedule5 dk

Linux vs Windows Sunucu: Hangisi Projeye Uygun?

Linux ve Windows Sunucu arasındaki teknik farkları, maliyet avantajlarını ve proje uyumluluğunu detaylı olarak karşılaştırıyoruz. Yazılım stack'inize en uygun işletim sistemini seçmek için kapsamlı rehberimizle doğru altyapı kararını verin.

S
Serversiumarrow_forward
Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber
Sunucu Yönetimi
calendar_today16 Nisan 2026
schedule5 dk

Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber

Ubuntu 24 üzerinde Plesk kurulumunu adım adım öğrenin. Bu rehberde sistem gereksinimleri, kurulum adımları ve temel yapılandırma ayarlarını bulabilirsiniz.

S
Serversiumarrow_forward