Blogchevron_rightSunucu Yönetimichevron_rightDocker Compose .env Dosyası Kullanımı Rehberi

Docker Compose .env Dosyası Kullanımı Rehberi

S
Serversium
calendar_today2 Haziran 2026
schedule5 dk okuma
Docker Compose .env Dosyası Kullanımı Rehberi

Docker Compose Projelerinde Environment (.env) Dosyası Kullanımı

Docker Compose, çoklu konteyner uygulamalarını tanımlamak ve çalıştırmak için kullanılan güçlü bir araçtır. Bu araçla birlikte .env dosyası kullanmak, uygulama yapılandırmasını esnek ve güvenli hale getirir. Environment değişkenleri, uygulamanızın farklı ortamlarda (geliştirme, test, üretim) sorunsuz çalışmasını sağlar.

Modern yazılım geliştirme süreçlerinde, deployment ve konfigürasyon yönetimi kritik öneme sahiptir. Docker Compose ile .env dosyası kullanımı, bu süreçleri standardize eder.

.env Dosyası Nedir ve Neden Kullanılır?

.env dosyası, ortam değişkenlerini anahtar-değer çiftleri halinde saklayan basit bir metin dosyasıdır. Bu dosya, uygulama yapılandırmasını kod tabanından ayrı tutarak önemli avantajlar sağlar:

  • Güvenlik: Hassas bilgiler (API anahtarları, veritabanı şifreleri) kaynak kodunda saklanmaz
  • Taşınabilirlik: Aynı proje farklı geliştiriciler veya ortamlar arasında kolayca paylaşılabilir
  • Esneklik: Ortam bazlı yapılandırma değişiklikleri kod değişikliği gerektirmez
  • Kolay Yönetim: Yapılandırma tek bir yerden yönetilir

.env Dosyası Temel Sözdizimi

.env dosyasındaki her satır bir ortam değişkenini temsil eder. Temel format şu şekildedir:

VERITABANI_HOST=localhost
VERITABANI_KULLANICI=root
VERITABANI_SIFRE=gizli_sifre_123
API Anahtarı=your_api_key_here
PORT=5432

Docker Compose, bu dosyayı otomatik olarak okur ve ortam değişkenlerini konteynerlere aktarır.

Docker Compose ile .env Dosyası Kullanımı

Temel docker-compose.yml Yapılandırması

Docker Compose, projenizin kök dizinindeki .env dosyasını otomatik olarak okur. İşte temel bir örnek:

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "${PORT}:80"
    environment:
      - VERITABANI_HOST=${VERITABANI_HOST}
      - VERITABANI_KULLANICI=${VERITABANI_KULLANICI}

  postgres:
    image: postgres:15
    environment:
      POSTGRES_USER: ${VERITABANI_KULLANICI}
      POSTGRES_PASSWORD: ${VERITABANI_SIFRE}
      POSTGRES_DB: uygulama_db
    volumes:
      - postgres_data:/var/lib/postgresql/data

Bu yapılandırmada, ${DEGISKEN_ADI} sözdizimi ile .env dosyasındaki değerler referans alınır.

args Parametresi ile Kullanım

Docker Compose'da build argümanları için de .env dosyası kullanılabilir:

version: '3.8'

services:
  web:
    build:
      context: .
      args:
        NODE_VERSION: ${NODE_VERSION}
        API_URL: ${API_URL}
    image: myapp:latest

Docker Compose .env Dosyası Öncelik Sırası

Docker Compose, ortam değişkenlerini farklı kaynaklardan okur ve belirli bir öncelik sırasına göre işler. Bu sıralamayı anlamak, yapılandırma hatalarını önlemek için kritiktir.

Öncelik Kaynak Açıklama
1 Komut satırı ortam değişkenleri Terminalden aktarılan değişkenler
2 shell ortamı Kabuk oturumunda tanımlı değişkenler
3 .env dosyası Proje kökündeki .env dosyası
4 docker-compose.override.yml Geçersiz kılma yapılandırması

--env-file Seçeneği

Varsayılan .env dosyası yerine farklı bir dosya kullanmak istediğinizde --env-file parametresini kullanabilirsiniz:

docker-compose --env-file .env.production up

Bu komut, .env.production dosyasını kullanarak konteynerleri başlatır. Bu özellik, farklı ortamlar arasında geçiş yapmak için idealdir.

Güvenlik En İyi Uygulamaları

.env dosyası kullanırken güvenlik en üst düzeyde tutulmalıdır. İşte dikkat edilmesi gereken kritik noktalar:

1. .gitignore'a Ekleyin

.env dosyasının versiyon kontrol sistemine eklenmemesi gerekir. Projenizin .gitignore dosyasına şu satırı ekleyin:

# .gitignore dosyasına ekleyin
.env
.env.local
.env.*.local

2. Örnek Dosya Oluşturun

Ekip üyelerinin hangi değişkenlere ihtiyaç duyduğunu bilmesi için bir .env.example dosyası oluşturun:

# .env.example - Bu dosyayı kopyalayıp .env olarak yeniden adlandırın
VERITABANI_HOST=localhost
VERITABANI_KULLANICI=myapp
VERITABANI_SIFRE=
API_URL=http://localhost:3000

3. Docker Secrets Kullanın

Üretim ortamında daha yüksek güvenlik için Docker Secrets'ı tercih edin. Özellikle veri merkezi altyapılarında bu kritik öneme sahiptir.

Pratik Kullanım Senaryoları

Çoklu Ortam Yapılandırması

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

# .env.development
NODE_ENV=development
API_URL=http://localhost:3000
LOG_LEVEL=debug

# .env.production
NODE_ENV=production
API_URL=https://api.example.com
LOG_LEVEL=error

Ortamlar arası geçiş için şu komutları kullanabilirsiniz:

# Geliştirme ortamı
docker-compose --env-file .env.development up

# Üretim ortamı
docker-compose --env-file .env.production up

Veritabanı Yapılandırması

Veritabanı bağlantıları için .env dosyası kullanımı yaygın bir pratiktir:

version: '3.8'

services:
  app:
    image: node:18-alpine
    environment:
      - DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@postgres:5432/${DB_NAME}
    depends_on:
      - postgres

  postgres:
    image: postgres:15-alpine
    environment:
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_DB: ${DB_NAME}

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

Hata 1: Değişken Değeri Boş Geliyor

.env dosyasındaki değerler okunmuyorsa, dosya yolunu kontrol edin. .env dosyası mutlaka docker-compose.yml ile aynı dizinde olmalıdır.

Hata 2: Tırnak İşareti Sorunları

Değerlerde özel karakterler varsa tırnak kullanın:

# Doğru kullanım
API_KEY="abc123!@#$%"
DATABASE_URL="postgres://user:pass@host:5432/db"

# Yanlış kullanım
API_KEY=abc123!@#$%

Hata 3: Varsayılan Değer Kullanımı

Bazı değişkenler için varsayılan değer tanımlamak isterseniz:

services:
  web:
    environment:
      - PORT=${PORT:-80}  # PORT tanımlanmamışsa 80 kullanılır
      - HOST=${HOST:-localhost}

Docker Compose ve .env İle İlgili Diğer Kaynaklar

Docker Compose becerilerinizi geliştirmek için şu kaynaklara göz atabilirsiniz:

Sonuç

Docker Compose projelerinde .env dosyası kullanımı, modern yazılım geliştirme pratiğinin temel taşlarından biridir. Doğru uygulandığında, uygulamanızı daha güvenli, taşınabilir ve bakımı kolay hale getirir.

Bu rehberde ele aldığımız konuları özetleyecek olursak:

  • .env dosyası ile ortam değişkenlerini merkezi olarak yönetin
  • Güvenlik için dosyayı .gitignore'a ekleyin
  • Ekibiniz için .env.example dosyası oluşturun
  • Farklı ortamlar için ayrı .env dosyaları kullanın
  • Varsayılan değerlerle hata olasılığını azaltın

    Bu pratikleri uygulayarak Docker Compose projelerinizde profesyonel düzeyde yapılandırma yönetimi 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