Saya tidak yakin bagaimana memberi nama Dockerfiles. Banyak di GitHub menggunakan Dockerfile
tanpa ekstensi file. Apakah saya memberi mereka nama dan ekstensi; jika demikian apa Atau apakah saya hanya memanggil mereka Dockerfile
?
Saya tidak yakin bagaimana memberi nama Dockerfiles. Banyak di GitHub menggunakan Dockerfile
tanpa ekstensi file. Apakah saya memberi mereka nama dan ekstensi; jika demikian apa Atau apakah saya hanya memanggil mereka Dockerfile
?
Jawaban:
Jangan ubah nama dockerfile jika Anda ingin menggunakan autobuilder di hub.docker.com. Jangan gunakan ekstensi untuk file buruh pelabuhan, biarkan null. Nama file seharusnya: (tanpa ekstensi sama sekali)
Dockerfile
dev.Dockerfile
, test.Dockerfile
, build.Dockerfile
Dll
Pada VS Code saya gunakan <purpose>.Dockerfile
dan dikenali dengan benar.
Saya pikir Anda harus memiliki direktori per kontainer dengan Dockerfile (tanpa ekstensi) di dalamnya. Sebagai contoh:
/db/Dockerfile
/web/Dockerfile
/api/Dockerfile
Saat Anda membangun, cukup gunakan nama direktori, Docker akan menemukan Dockerfile. misalnya:
docker build -f ./db .
Jika Anda ingin menggunakan autobuilder di hub.docker.com, itu harus Dockerfile
. Jadi disana :)
Tampaknya ini benar tetapi, secara pribadi, menurut saya desainnya buruk. Tentu, memiliki nama default (dengan ekstensi) tetapi mengizinkan nama lain dan memiliki cara untuk menentukan nama file buruh pelabuhan untuk perintah.
Memiliki ekstensi juga bagus karena memungkinkan seseorang untuk mengaitkan aplikasi ke jenis ekstensi itu. Ketika saya mengklik Dockerfile di MacOSX, ia memperlakukannya sebagai Unix yang dapat dieksekusi dan mencoba menjalankannya.
Jika file Docker memiliki ekstensi, saya dapat memberi tahu OS untuk memulainya dengan aplikasi tertentu, misalnya aplikasi editor teks saya. Saya tidak yakin tetapi perilaku saat ini mungkin juga terkait dengan izin file.
Saya telah membuat dua Dockerfile di direktori yang sama,
# vi one.Dockerfile
# vi two.Dockerfile
untuk membangun kedua penggunaan Dockerfiles,
# docker build . -f one.Dockerfile
# docker build . -f two.Dockerfile
Catatan: Anda harus berada di direktori kerja saat ini ..
Apakah saya memberi mereka nama dan ekstensi; jika demikian apa
Anda dapat menamai Dockerfiles sesuka Anda. Nama file default adalah Dockerfile
(tanpa ekstensi), dan menggunakan default dapat membuat berbagai tugas lebih mudah saat bekerja dengan container.
Tergantung pada kebutuhan spesifik Anda, Anda mungkin ingin mengubah nama file. Jika Anda membuat untuk beberapa arsitektur, misalnya, Anda mungkin ingin menambahkan ekstensi yang menunjukkan arsitektur seperti yang telah dilakukan tim resin.io untuk penampung HAProxy, contoh ARM multi-container mereka :
Dockerfile.aarch64
Dockerfile.amd64
Dockerfile.armhf
Dockerfile.armv7hf
Dockerfile.i386
Dockerfile.i386-nlp
Dockerfile.rpi
Dalam contoh yang diberikan, setiap Dockerfile dibuat dari image upstream khusus arsitektur yang berbeda. Dockerfile spesifik yang akan digunakan untuk build dapat ditentukan menggunakan --file, -f
opsi saat membuat container Anda menggunakan command line.
Saya tahu ini adalah pertanyaan lama, dengan beberapa jawaban, tetapi saya terkejut menemukan bahwa tidak ada yang menyarankan konvensi penamaan yang digunakan dalam dokumentasi resmi :
$ docker build -f dockerfiles/Dockerfile.debug -t myapp_debug . $ docker build -f dockerfiles/Dockerfile.prod -t myapp_prod .
Perintah di atas akan membangun konteks build saat ini (seperti yang ditentukan oleh
.
) dua kali, sekali menggunakan versi debug dari aDockerfile
dan sekali lagi menggunakan versi produksi.
Singkatnya, jika Anda memiliki file yang dipanggil Dockerfile
di root konteks build Anda, itu akan diambil secara otomatis. Jika Anda memerlukan lebih dari satu Dockerfile
untuk konteks build yang sama, konvensi penamaan yang disarankan adalah:
Dockerfile.<purpose>
File galangan ini bisa berada di root konteks build Anda atau di subdirektori untuk menjaga direktori root Anda lebih rapi.
Dockerfile
bagus jika Anda hanya memiliki satu file buruh pelabuhan (per direktori). Anda dapat menggunakan standar apa pun yang Anda inginkan jika Anda memerlukan beberapa file buruh pelabuhan di direktori yang sama - jika Anda punya alasan yang bagus. Dalam proyek baru-baru ini ada file buruh pelabuhan AWS dan file lingkungan dev lokal karena lingkungannya cukup berbeda:
Dockerfile
Dockerfile.aws
Dockerfile.armv7hf
sebelah a Dockerfile.i386
.