Docker projelerinde en büyük zorluk, uygulamayı konteyner haline getirmek için gereken yapılandırma dosyalarını hatasız yazmaktır. Manuel yazım hem vakit alır hem de güvenlik açıklarına yol açabilir.
Docker ekibi tarafından geliştirilen docker init komutu, bu süreci tamamen otomatiğe bağlayarak manuel hata payını sıfıra indirir.
Docker init Nedir ve Neden Kullanmalıyız?
docker init, projenizin dizinini analiz eden ve uygulamanızın diline göre en iyi Docker yapılandırmasını otomatik oluşturan bir CLI aracıdır.
docker init Hangi Dosyaları Oluşturur?
README.docker.md Projenin nasıl çalıştırılacağına dair talimatlar.
Dockerfile Uygulamanın nasıl paketleneceğini belirler.
compose.yaml Çoklu konteyner yapılandırması için.
.dockerignore Gereksiz dosyaların imaja dahil edilmesini önler.

Neden docker init Kullanmalısınız?
| Özellik | Manuel Dockerfile | docker init |
| Hız | Orta Yazma + Hata Ayıklama | Çok Hızlı Saniyeler içinde |
| Güvenlik | Kullanıcıya bağlı | Root olmayan (non-root) kullanıcı atar |
| Performans | Değişken | Çok katmanlı (Multi-stage) yapılandırma sunar |
| Hata Payı | Yüksek | Minimum (Standart şablonlar kullanılır) |
Sistem Gereksinimleri
docker init komutunu kullanabilmek için Docker Desktop v4.19.0 veya üzeri bir sürüme sahip olmanız yeterlidir. Terminalinizde docker version yazarak bunu kontrol edebilirsiniz.
docker version
docker infodocker init komutunun sisteminde olup olmadığını kontrol etmek için de aşağıdaki komutu uygulayalım. Eğer yardım ekranı açılıyorsa komut kullanılabilir durumdadır.
docker init --helpdocker init Nasıl Çalışır?
docker init, projenizi otomatik tanıyabilmek için dizin içinde genelde bir bağımlılık dosyası arar.
- Python için requirements.txt
- Go için go.mod
- Node.js için package.json
Eğer bu dosyalar yoksa, docker init hangi dili kullandığınızı otomatik anlayamaz ve sizden manuel seçim yapmanızı ister.
Komutu Çalıştırma
Terminali açalım ve projenin ana dizinine geçelim. Ardından komutu çalıştıralım.
docker initPython Projelerinde docker init Kullanımı
Python projelerinde Docker kullanırken en büyük dert, imajın çok büyük olması ve güvenlik ayarlarının unutulmasıdır.
Dosyaların Hazırlanması
Docker’ın Python projesini otomatik tanıması için dizininizde mutlaka şu iki dosya bulunmalıdır.
- app.py: Uygulama kodunuz.
- requirements.txt: Bağımlılıklarınız
Dosya adı mutlaka requirements.txt olmalıdır. Yanlış yazılmış bir dosya adı docker init’in Python projesini otomatik algılamasını engelleyebilir.
Örnek Flask Uygulaması
Aşağıdaki gibi basit bir Flask uygulaması oluşturabilirsiniz.
app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "<h1>Docker Init ile Flask Hazır!</h1>"
if __name__ == "__main__":
app.run(debug=True, host="0.0.0.0", port=8000)requirements.txt
flask
gunicorndocker init çalıştırdıktan sonra uygulama tipini Python seçelim. Giriş dosyasını ve portu belirtelim. Dosyalar oluştuktan sonra şu komutla güncele alalım.
docker compose up --builddocker init çalıştığında ekranda bazı sorular görürsünüz. Bu soruları aşağıdaki mantıkla cevaplamak en doğru yaklaşımdır:
- Select Application Platform: Python zaten çoğu zaman otomatik algılar.
- Python Version: Varsayılan sürüm (ör. 3.11.x) en stabil ve güvenli seçenek genelde budur.
- Port: Uygulamanız hangi portu dinliyor? flask projelerinde çoğunlukla 5000 veya 8000 kullanılır.
- Command: Uygulamayı nasıl başlatıyorsunuz?
python3 app.pygunicorn app:app
Bu soruların amacı, Docker’ın sizin yerinize doğru Dockerfile ve Compose dosyasını üretebilmesidir.


docker init Tarafından Oluşturulan Yapı
Sorular tamamlandıktan sonra Docker, proje dizinine otomatik olarak şu dosyaları ekler. Bu noktadan sonra proje Docker ile çalıştırılabilir hale gelir.
- Dockerfile
- compose.yaml
- .dockerignore
Bu noktadan sonra proje Docker ile çalıştırılabilir hale gelir.
Oluşturulan yapıdan sonra uygulamayı build edip çalıştırmak için tek bir komut yeterlidir. docker compose up --build komutu çalıştırıldığında Docker önce Dockerfile üzerinden imajı oluşturur, ardından compose.yaml içindeki port yönlendirmelerini uygular

Sık Sorulan Sorular
docker init hangi dosyaları otomatik oluşturur?
docker init çalıştırıldığında proje dizinine otomatik olarak Dockerfile, compose.yaml, .dockerignore ve çoğu senaryoda README.docker.md dosyaları eklenir.
docker init Python projesini neden algılamıyor?
En yaygın sebep, bağımlılık dosyasının eksik olması veya yanlış isimlendirilmesidir. Python projelerinde dizinde mutlaka requirements.txt bulunmalıdır.
docker init ile oluşturulan Dockerfile güvenli midir?
Üretilen Dockerfile genellikle root olmayan kullanıcı (non-root) ile çalışma mantığını içerir. Bu yaklaşım, konteyner ele geçirilse bile yetki kapsamını sınırlandırır.
docker init sonrası Docker Compose çalışmıyor, “network not found” hatası neden olur?
Bu hata genellikle eski Compose projelerinden kalan network tanımları, silinmiş Docker ağları veya compose.yaml içinde referans verilen bir ağın sistemde bulunmaması nedeniyle oluşur.
