[/QUOTE]
Python projelerinde Docker kullanırken, ortam değişkenleri (environment variables) uygulama yapılandırmasını esnek ve güvenli hale getirir. Bu değişkenler, örneğin API anahtarları, veritabanı bağlantı bilgileri veya uygulama ayarları gibi hassas bilgileri koddan ayırıp, farklı ortamlar arasında kolayca yönetmenize olanak tanır. Docker konteynerlerinde ortam değişkenlerini kullanmak, uygulamanın taşınabilirliğini artırır ve güvenlik açısından da avantaj sağlar.
Dockerfile içerisinde ortam değişkenlerini tanımlayabilirsiniz. Örneğin:
123
ENV APP_ENV=production
ENV DB_HOST=localhost
Ancak, genellikle bu değişkenler,
docker run komutu veya
docker-compose.yml dosyası aracılığıyla dışarıdan sağlanır. Örneğin,
docker run ile ortam değişkenleri belirlemek için:
12
docker run -e APP_ENV=production -e DB_HOST=localhost my-python-app
Veya
docker-compose.yml kullanılırsa:
12345678
version: '3'
services:
app:
image: my-python-app
environment:
APP_ENV: production
DB_HOST: db.example.com
Python uygulamasında ise, ortam değişkenlerini okumak için
os modülü kullanılır:
12345678
import os
app_env = os.getenv('APP_ENV', 'development')
db_host = os.getenv('DB_HOST', '127.0.0.1')
print(f"Environment: {app_env}")
print(f"Database Host: {db_host}")
Burada,
os.getenv() fonksiyonu, ilk parametre olarak ortam değişkeninin adını alır ve ikinci parametre ile varsayılan değeri belirler. Bu sayede, ortam değişkeni tanımlı değilse bile uygulama güvenli bir şekilde çalışmaya devam eder.
Güvenlik açısından, hassas bilgilerin doğrudan Dockerfile veya kod içinde saklanmaması tavsiye edilir. Bunun yerine, ortam değişkenleri, CI/CD pipeline'ları veya gizli yönetim araçlarıyla sağlanmalı ve yönetilmelidir. Ayrıca,
.env dosyası kullanarak da ortam değişkenlerini yönetmek yaygındır:
12345
[b].env dosyası[/b]
APP_ENV=production
DB_HOST=localhost
DB_SECRET=supersecret
Bu dosya, Docker Compose veya
dotenv kitaplıklarıyla yüklenebilir.
Sonuç olarak, Docker ve Python entegrasyonunda ortam değişkenleri, yapılandırma yönetimini basitleştirir ve güvenliği artırır. Bu yöntemi doğru ve güvenli biçimde kullanmak, uygulamanızın farklı ortamlar arasında sorunsuz çalışmasını sağlar.