Dockerfiles nasıl adlandırılır


140

Dockerfiles nasıl adlandırılacağından emin değilim. GitHub'daki çoğu Dockerfiledosya uzantısı olmadan kullanır . Onlara bir isim ve uzantı verebilir miyim; Öyleyse ne olmuş? Yoksa sadece arar Dockerfilemıyım?

Yanıtlar:


165

Hub.docker.com adresindeki otomatik otobüsü kullanmak istiyorsanız dockerfile adını değiştirmeyin. Docker dosyaları için uzantı kullanmayın, boş bırakın. Dosya adı şu şekilde olmalıdır: (hiç uzantı yok)

Dockerfile

Ancak, aşağıdaki gibi de yapabilirsiniz ...

dev.Dockerfile, uat.Dockerfile, prod.DockerfileVb

VS Kodunda kullanabilirsiniz <purpose>.Dockerfileve buna göre çalışır.


83
Aynı dizinde birden fazla Docker dosyanız olduğunda ne olur?
Visgean Skeloru

@VisgeanSkeloru biraz zor olsa da gerekirse onları farklı dizinlere koyabilirsiniz, nereye
baksam

2
@VisgeanSkeloru Aynı dizinde birden fazla Docker dosyası yok. İçeren dizin haline bağlam için docker buildbaşka resmin dockerfile değiştirilirse her görüntü gereksiz yere yeniden inşa edilecek demek olduğunu komutu.
Thomas

6
@Thomas bazen ortak dosyaları ayrı kaplarda paylaşmak için aynı dizine birden fazla Docker dosyası yerleştirmeniz gerekir, çünkü docker içeriği "../some-common-stuff" dosyasına erişime izin vermez
Devis L.

"D" nin büyük harfle yazılması mı gerekiyor yoksa önemli değil mi?
NoName

51

dev.Dockerfile, test.Dockerfile, build.DockerfileVb

VS Kodu üzerinde kullanın <purpose>.Dockerfileve doğru bir şekilde tanınır.


27

İçinde Dockerfile (uzantı yok) ile konteyner başına bir dizin olması gerektiğini düşünüyorum. Örneğin:

  /db/Dockerfile
  /web/Dockerfile
  /api/Dockerfile

Sadece dizin adını kullandığınızda, Docker Docker dosyasını bulur. Örneğin:

docker build -f ./db .

Örneğinizden 3 kap oluşturacak mı?
alvas

@alvas Evet bu olacak
17:02

4
Birçok vakada yeterince iyi değil. Docker dosyaları göremiyor. Örneğin hedef, yapı vb.
Cyva

Bu 3 docker dosyasını docker-compose komutunu kullanarak tek seferde çalıştırabilir miyiz?
Yogi Ghorecha

16

Eğer autobuilder'ı hub.docker.com adresinde kullanmak istiyorsanız , olması gerekir Dockerfile . Bu yüzden orada :)


3
Sorunun içeriğinin daha geniş olduğuna inanıyorum. Belki de bu cevabı daha eksiksiz hale getirmek için otomatik oluşturucu kullanmayan kişiler için ek bilgiler ekleyebilirsiniz .
Josh Habdas

16

Bu doğru gibi görünüyor, ama kişisel olarak bana kötü tasarım gibi geliyor. Elbette, varsayılan bir ada sahip (uzantı ile) ancak diğer adlara izin verin ve komutlar için docker dosyasının adını belirtmenin bir yolu var.

Bir uzantıya sahip olmak da güzeldir çünkü uygulamaların bu uzantı türüyle ilişkilendirilmesine izin verir. MacOSX'ta bir Dockerfile'ı tıklattığımda bunu Unix yürütülebilir dosyası olarak görür ve çalıştırmaya çalışır.

Docker dosyaları bir uzantıya sahipse, işletim sisteminden bunları belirli bir uygulamayla başlatmasını söyleyebilirim, örneğin metin düzenleyici uygulamam. Emin değilim ama mevcut davranış dosya izinleri ile ilgili olabilir.


15

Aynı dizinde iki Docker dosyası oluşturdum,

# vi one.Dockerfile
# vi two.Dockerfile

hem Dockerfiles kullanımını oluşturmak için,

# docker build . -f one.Dockerfile
# docker build . -f two.Dockerfile

Not: şu anki çalışma dizininde olmalısınız ..


10

Onlara bir isim ve uzantı verebilir miyim; Öyleyse ne olmuş?

Docker dosyalarınızı istediğiniz gibi adlandırabilirsiniz. Varsayılan dosya adı Dockerfile(uzantısız) olup varsayılanı kullanmak kaplarla çalışırken çeşitli görevleri kolaylaştırabilir.

Özel gereksinimlerinize bağlı olarak dosya adını değiştirmek isteyebilirsiniz. Örneğin, birden fazla mimari için yapıyorsanız, resin.io ekibinin HAProxy konteyneri için çok konteynırlı ARM örneğini yaptığı gibi mimariyi gösteren bir uzantı eklemek isteyebilirsiniz :

Dockerfile.aarch64
Dockerfile.amd64
Dockerfile.armhf
Dockerfile.armv7hf
Dockerfile.i386
Dockerfile.i386-nlp
Dockerfile.rpi

Sunulan örnekte, her Dockerfile farklı, mimariye özgü, yukarı akışlı bir görüntüden oluşturulur. Derleme için kullanılacak belirli Dockerfile , komut satırını kullanarak kabınızı oluştururken --file, -fseçenek kullanılarak belirtilebilir .


1
Mimariyi (veya her neyse) belirtmek için bir uzantı kullanmayı seviyorum. Diğer bazı cevaplardan farklı olarak, tüm Docker dosyalarının büyük ve karmaşık bir dizinde bulunması çok kolaydır; doğal olarak birlikte sıralıyorlar.
Mike Sherrill 'Cat Recall'

3

Dockerfileyalnızca bir docker dosyanız (dizin başına) varsa iyidir. Aynı dizinde birden fazla docker dosyasına ihtiyacınız varsa, istediğiniz herhangi bir standardı kullanabilirsiniz - iyi bir nedeniniz varsa. Son zamanlarda yapılan bir projede AWS docker dosyaları ve yerel geliştirici ortam dosyaları vardı, çünkü ortamlar yeterince farklıydı:

Dockerfile Dockerfile.aws


Bu yöntemi mimarileri belirtmek için de kullandım. Örneğin, Dockerfile.armv7hfa Dockerfile.i386.
Josh Habdas

1

Dockerfile (özel ad ve klasör):

   docker/app.Dockerfile
   docker/nginx.Dockerfile

İnşa etmek:

   docker build  -f ./docker/app.Dockerfile .
   docker build  -f ./docker/nginx.Dockerfile .
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.