Dockerfile Oluşturucu
Dockerfile, ayrıntıları hatırlayana kadar kısa görünen dosyalardan biridir: katman sırası önbellek için önemlidir, COPY package.json RUN npm install öncesinde gelir ve derlenen diller çok aşamalı build’den yararlanır. Bu oluşturucu, seçtiğiniz teknoloji için önbellek düzeni baştan doğru olan kullanıma hazır bir Dockerfile yazar.
Dockerfile nasıl oluşturulur
-
1
Teknolojiyi seçin
Node.js, Python, PHP, Go veya Rust. Her şablon, o dil için uygun bir temel görüntü ve doğru bağımlılık kurma komutunu kullanır.
-
2
Çalışma dizinini ve portu ayarlayın
WORKDIR ve uygulamanızın dinleyeceği portu seçin; ikisi de oluşturulan dosyaya yazılır.
-
3
Dockerfile'ı inceleyin
EXPOSE satırının ve başlatma komutunun uygulamanızla eşleştiğini kontrol edin. Go ve Rust şablonları çok aşamalı build kullanır.
-
4
Dockerfile'ı kopyalayın
Sonucu kopyalayıp deponuzun kök dizinine yapıştırın, ardından görüntüyü derleyin.
Neden çok aşamalı build
Saf bir Dockerfile, derleyici araç zincirinin tamamını son görüntüye kurar. Çok aşamalı build; derlemeyi yapan bir “builder” aşaması ve yalnızca derlenmiş çıktıyı taşıyan bir son aşama sunar:
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
USER node
EXPOSE 3000
CMD ["node", "dist/index.js"]
Son görüntüde tüm geliştirme bağımlılıkları, kaynak dosyalar ve build önbelleği atılır; görüntü boyutu çoğu zaman yüzde 60-80 oranında küçülür.
Temel görüntü çeşitleri
Şablonlar mümkün olduğunca slim veya alpine görüntüleri kullanır. Temel görüntüyü kendiniz ayarlayacaksanız tipik seçenekler şunlardır:
| Çeşit | Tipik boyut | Ne zaman seçilmeli |
|---|---|---|
| full | 300-900 MB | Geliştirme görüntüleri, alışılmadık sistem bağımlılıkları |
| slim | 80-200 MB | Çoğu dil için üretim standardı |
| alpine | 30-100 MB | Küçük görüntüler, glibc ile musl farkına dikkat |
| distroless | 20-80 MB | Maksimum güvenlik; kabuk ve paket yöneticisi yok |
Katman önbelleği kuralları
Docker her satırı önbelleğe alır; bir katman değiştiğinde altındaki her şey yeniden derlenir. En az değişenden en çok değişene doğru sıra:
FROMtemel görüntüsü (nadiren değişir).- Sistem paketleri (
apt-get install), seyrek değişiklikler. - Bağımlılık manifestleri (
package.json,requirements.txt,composer.json). - Bağımlılık kurma adımı. Yalnızca manifest değiştiğinde çalışır.
- Kaynak kodun kopyalanması. En yoğun katman; sonrasındaki her şey her commit’te yeniden derlenir.
- Derleme ve son
CMD.
Bu sırayı bozmak, CI build’lerinin yavaşlamasının en yaygın nedenidir.
Güvenlik kontrol listesi
- Root olmayan kullanıcıyla çalıştırın. Sona doğru
USER appuser(veyaUSER 1000) yazın. - Sürümleri sabitleyin.
python:3.12.7-slim,python:3.12’den, o dapython:latest’ten iyidir. /yerine açık birWORKDIRbelirleyin.- Yerel dosyalar için
ADDdeğilCOPYkullanın.ADDotomatik açma yan etkilerine sahiptir. - Bir
HEALTHCHECKekleyin ki orkestratörler takılan süreci algılayabilsin. - Paket önbelleklerini aynı
RUNsatırında temizleyin:apt-get install ... && rm -rf /var/lib/apt/lists/*.
Sık Sorulan Sorular
Slim, kütüphanelerin önceden derlenmiş wheel’larının çoğu gibi hâlâ glibc tabanlı olduğu için daha güvenli bir varsayılandır. Alpine musl kullanır ve Python (pandas, numpy) veya Node (node-gyp yerel modülleri) içinde ara sıra gizemli çalışma zamanı hatalarına yol açar. Görüntü boyutu kritikse ve teknolojiyi test ettiyseniz alpine seçin.
Evet, projenize bir tane ekleyin. Olmadan Docker, deponuzun tamamını build bağlamı olarak daemon’a gönderir: git geçmişi, node_modules, yerel .env dosyaları, testler. Bu yavaştır, önbelleği boşa harcar ve sırları sızdırır.
Evet. İki mimariyi birden derlemek için docker buildx komutunu --platform seçeneğiyle kullanın. Şablonların kullandığı temel görüntüler arm64 sürümlerini de yayınlar.
Hayır. Seçilen teknoloji, çalışma dizini ve port yalnızca bu sayfada Dockerfile üretmek için kullanılır; hiçbir şey saklanmaz veya paylaşılmaz.
İlgili Araçlar
ASCII Tablosu Referansı
NUL, LF ve DEL dahil her kod için ondalık, onaltılık, sekizlik ve ikili değerlerle HTML sayısal karakter başvurusu gösterimini sunan tam ASCII tablosu.
HTML Karakter Referansı
HTML varlıklarının aranabilir listesi; adlandırılmış ve sayısal kodlarıyla birlikte özel karakter ve semboller için tek tıkla kopyalama.
Klavye kısayolları başvurusu
macOS, Windows ve Linux’ta VS Code, Chrome ve GNU Readline kullanan Bash için belgelenmiş varsayılan kısayolları arayın.
EditorConfig Oluşturucu
Girinti stili ve boyutu, satır sonu, karakter kümesi ve boşluk kurallarınızla bir .editorconfig dosyası oluşturarak IDE ve editörler arasında tutarlı biçimlendirme sağlayın.
E-posta Doğrulayıcı
Bir e-posta adresini doğrulayın: RFC 5322 sözdizimi kontrolü, canlı MX kaydı sorgulama, ayrıca yerel kısım, alan adı ve uzunluk bilgileri. Hiçbir e-posta gönderilmez.
Gradyan Duvar Kağıdı Oluşturucu
Dizüstü bilgisayar, telefon veya Zoom arka planları için bulanık üç renkli gradyan duvar kağıtları oluşturun. Açıyı ve bulanıklığı rastgele belirleyin ya da elle ayarlayın.
Araç diğer dillerde mevcuttur
- Generator Dockerfile [PL]
- Gerador de Dockerfile [PT]
- Generador de Dockerfile [ES]
- Dockerfile-generator [NL]
- Trình tạo Dockerfile [VI]
- مولد ملفات Docker [AR]
- Dockerfile-generator [SV]
- Dockerfile生成 [JA]
- ตัวสร้าง Dockerfile [TH]
- Generator Dockerfile [ID]
- Dockerfile 생성기 [KO]
- Générateur de Dockerfile [FR]
- Dockerfile-Generator [DE]
- Dockerfile Generator [EN]
- Generatore di Dockerfile [IT]
- Генератор Dockerfile [RU]
- Dockerfile 生成器 [ZH]