Generator Dockerfile
Dockerfile adalah salah satu file yang tampak pendek sampai Anda ingat detailnya: urutan layer penting untuk cache, COPY package.json harus sebelum RUN npm install, dan bahasa terkompilasi diuntungkan oleh build multi-stage. Generator ini menulis Dockerfile siap pakai untuk teknologi pilihan Anda dengan pola cache yang sudah benar.
Cara membuat Dockerfile
-
1
Pilih teknologi
Node.js, Python, PHP, Go, atau Rust. Setiap template memakai base image yang sesuai untuk bahasa tersebut dan perintah instalasi dependensi yang benar.
-
2
Atur direktori kerja dan port
Pilih WORKDIR dan port yang dipakai aplikasi Anda; keduanya ditulis ke file yang dihasilkan.
-
3
Periksa Dockerfile
Pastikan baris EXPOSE dan perintah start cocok dengan aplikasi Anda. Template Go dan Rust memakai build multi-stage.
-
4
Salin Dockerfile
Salin hasilnya dan tempel ke root repositori Anda, lalu build image.
Mengapa build multi-stage
Dockerfile yang naif menginstal seluruh toolchain compiler ke image final. Build multi-stage memberi Anda tahap “builder” yang mengompilasi dan tahap final yang hanya membawa artefak hasil kompilasi:
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"]
Image final membuang semua dependensi dev, file sumber, dan cache build, sering kali memangkas ukuran image hingga 60-80 persen.
Varian base image
Template memakai image slim atau alpine jika memungkinkan. Jika Anda menyesuaikan base image sendiri, inilah pilihan umumnya:
| Varian | Ukuran umum | Kapan memilihnya |
|---|---|---|
| full | 300-900 MB | Image pengembangan, dependensi sistem yang tidak biasa |
| slim | 80-200 MB | Standar produksi untuk sebagian besar bahasa |
| alpine | 30-100 MB | Image kecil, waspadai masalah glibc vs musl |
| distroless | 20-80 MB | Keamanan maksimal; tanpa shell, tanpa package manager |
Aturan cache layer
Docker men-cache setiap baris; begitu satu layer berubah, semua di bawahnya dibangun ulang. Urutan dari yang paling jarang hingga paling sering berubah:
- Base image
FROM(jarang berubah). - Paket sistem (
apt-get install), perubahan jarang. - Manifest dependensi (
package.json,requirements.txt,composer.json). - Langkah instalasi dependensi. Hanya berjalan saat manifest berubah.
- Salinan kode sumber. Layer paling sibuk; semua setelahnya dibangun ulang setiap commit.
- Kompilasi dan
CMDfinal.
Melanggar urutan ini adalah alasan paling umum build CI menjadi lambat.
Daftar periksa keamanan
- Jalankan sebagai non-root. Setel
USER appuser(atauUSER 1000) di dekat akhir. - Pin versi.
python:3.12.7-slimlebih baik daripadapython:3.12, yang lebih baik daripadapython:latest. - Tetapkan
WORKDIReksplisit daripada mengandalkan/. - Gunakan
COPY, bukanADD, untuk file lokal;ADDpunya efek samping ekstraksi otomatis. - Tambahkan
HEALTHCHECKagar orchestrator dapat mendeteksi proses yang macet. - Bersihkan cache paket di baris
RUNyang sama:apt-get install ... && rm -rf /var/lib/apt/lists/*.
Pertanyaan yang Sering Diajukan
Slim adalah default yang lebih aman karena masih berbasis glibc, seperti kebanyakan wheel terkompilasi pustaka. Alpine memakai musl dan kadang menimbulkan bug runtime misterius di Python (pandas, numpy) atau Node (modul native node-gyp). Pilih alpine saat ukuran image sangat penting dan Anda sudah menguji teknologi tersebut.
Ya, tambahkan satu ke proyek Anda. Tanpa itu, Docker mengirim seluruh repositori ke daemon sebagai build context: riwayat git, node_modules, file .env lokal, tes. Itu lambat, membuang cache, dan membocorkan secret.
Ya. Gunakan docker buildx dengan opsi --platform untuk membangun kedua arsitektur sekaligus. Base image yang dipakai template menerbitkan varian arm64.
Tidak. Pilihan teknologi, direktori kerja, dan port hanya dipakai untuk merender Dockerfile di halaman ini; tidak ada yang disimpan atau dibagikan.
Alat Terkait
Referensi Tabel ASCII
Tabel ASCII lengkap dari 0 sampai 127 dengan desimal, heksadesimal, oktal, biner, dan referensi karakter numerik HTML untuk setiap karakter, termasuk kode kontrol seperti NUL, LF, dan DEL.
Referensi Karakter HTML
Daftar entitas HTML yang dapat dicari, beserta kode bernama dan kode numeriknya, serta fitur salin dengan satu klik untuk karakter khusus dan simbol.
Referensi pintasan papan ketik
Cari pintasan bawaan terdokumentasi untuk VS Code, Chrome, dan Bash dengan GNU Readline di macOS, Windows, dan Linux.
Generator Warna Acak
Buat 1 hingga 50 warna HEX acak dengan contoh warna yang bisa dipratinjau, disalin, dan dipakai di CSS, pengujian, atau eksplorasi palet.
Penghitung FPS
Ukur FPS browser dengan requestAnimationFrame: penghalusan, frame rate minimum dan maksimum, ambang peringatan, dan grafik opsional. Berjalan lokal, tanpa unggahan dan tanpa API.
Pemilih Warna HEX
Pilih atau masukkan warna HEX untuk mendapatkan RGB, HSL, perkiraan CMYK, luminans relatif, serta kontras terhadap putih dan hitam.
Alat ini tersedia dalam bahasa lain
- Dockerfile 생성기 [KO]
- Trình tạo Dockerfile [VI]
- Dockerfile-generator [NL]
- Dockerfile 生成器 [ZH]
- Dockerfile-Generator [DE]
- Dockerfile Generator [EN]
- Dockerfile-generator [SV]
- Generator Dockerfile [PL]
- مولد ملفات Docker [AR]
- ตัวสร้าง Dockerfile [TH]
- Generador de Dockerfile [ES]
- Générateur de Dockerfile [FR]
- Gerador de Dockerfile [PT]
- Dockerfile生成 [JA]
- Dockerfile Oluşturucu [TR]
- Generatore di Dockerfile [IT]
- Генератор Dockerfile [RU]