Cách đặt tên Dockerfiles


140

Tôi không chắc về cách đặt tên Dockerfiles. Nhiều người trên GitHub sử dụng Dockerfilemà không có phần mở rộng tập tin. Tôi có cho họ một cái tên và phần mở rộng không; nếu vậy thì sao Hay tôi chỉ gọi cho họ Dockerfile?

Câu trả lời:


165

Đừng thay đổi tên của dockerfile nếu bạn muốn sử dụng autobuilder tại hub.docker.com. Không sử dụng tiện ích mở rộng cho các tệp docker, để trống. Tên tệp chỉ nên là: (không có phần mở rộng nào cả)

Dockerfile

tuy nhiên, bạn cũng có thể làm như dưới đây ...

dev.Dockerfile, uat.Dockerfile, prod.Dockerfile, Vv

Trên VS Code bạn có thể sử dụng <purpose>.Dockerfilevà nó hoạt động tương ứng.


83
Còn khi bạn có nhiều Dockerfiles trong cùng một thư mục thì sao?
Visgean Sk Bacheloru

@VisgeanSk Bacheloru mặc dù hơi rắc rối, bạn có thể đặt chúng vào các thư mục khác nhau nếu cần, cho dù tôi có vẻ như nó đã được thiết lập theo quy ước
orustammanapov

2
@VisgeanSk Bacheloru Đừng có nhiều Dockerfiles trong cùng một thư mục. Thư mục chứa trở thành bối cảnh cho docker buildlệnh, có nghĩa là mỗi hình ảnh sẽ được xây dựng lại một cách không cần thiết nếu dockerfile của hình ảnh khác bị thay đổi.
Thomas

6
@Thomas đôi khi bạn cần đặt nhiều Dockerfiles trong cùng một thư mục để chia sẻ các tệp chung trên các container riêng biệt, vì ngữ cảnh docker không cho phép truy cập "../some-common- ware"
Devis L.

Chữ "D" có phải được viết hoa hay không?
NoName

51

dev.Dockerfile, test.Dockerfile, build.Dockerfile, Vv

Trên VS Code tôi sử dụng <purpose>.Dockerfilevà nó được nhận dạng chính xác.


27

Tôi nghĩ bạn nên có một thư mục trên mỗi container có Dockerfile (không có phần mở rộng) trong đó. Ví dụ:

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

Khi bạn xây dựng chỉ cần sử dụng tên thư mục, Docker sẽ tìm Dockerfile. ví dụ:

docker build -f ./db .

Nó sẽ xây dựng 3 container từ ví dụ của bạn?
alvas

@alvas Có nó sẽ
garryp

4
Nó không đủ tốt cho nhiều trường hợp. Docker không thể xem tập tin. Ví dụ: mục tiêu, xây dựng, v.v.
Cyva

Chúng ta có thể chạy tập tin 3 docker này cùng một lúc bằng cách sử dụng lệnh docker-compose không?
Yogi Ghorecha

16

Nếu bạn muốn sử dụng autobuilder tại hub.docker.com, thì nó phải như vậy Dockerfile . Vậy đó :)


3
Tôi tin rằng bối cảnh của câu hỏi đã rộng hơn. Có lẽ bạn có thể bao gồm thông tin bổ sung cho các cá nhân không sử dụng autobuilder để làm cho câu trả lời này đầy đủ hơn.
Josh Habdas

16

Có vẻ như điều này là đúng nhưng, cá nhân tôi, dường như là thiết kế kém. Chắc chắn, có một tên mặc định (có phần mở rộng) nhưng cho phép các tên khác và có cách chỉ định tên của tệp docker cho các lệnh.

Có một tiện ích mở rộng cũng rất tốt vì nó cho phép người ta liên kết các ứng dụng với loại tiện ích mở rộng đó. Khi tôi nhấp vào Dockerfile trong MacOSX, nó coi nó như một tệp thực thi Unix và cố gắng chạy nó.

Nếu các tệp Docker có phần mở rộng, tôi có thể yêu cầu HĐH khởi động chúng bằng một ứng dụng cụ thể, ví dụ: ứng dụng soạn thảo văn bản của tôi. Tôi không chắc nhưng hành vi hiện tại cũng có thể liên quan đến sự cho phép của tập tin.


15

Tôi đã tạo hai Dockerfiles trong cùng một thư mục,

# vi one.Dockerfile
# vi two.Dockerfile

để xây dựng cả Dockerfiles sử dụng,

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

Lưu ý: bạn nên có trong thư mục làm việc hiện tại ..


10

Tôi có cho họ một cái tên và phần mở rộng không; nếu vậy thì sao

Bạn có thể đặt tên cho Dockerfiles của bạn theo cách bạn muốn. Tên tệp mặc định là Dockerfile(không có phần mở rộng) và sử dụng mặc định có thể giúp các tác vụ khác nhau dễ dàng hơn trong khi làm việc với các thùng chứa.

Tùy thuộc vào yêu cầu cụ thể của bạn, bạn có thể muốn thay đổi tên tệp. Ví dụ: nếu bạn đang xây dựng cho nhiều kiến ​​trúc, bạn có thể muốn thêm một phần mở rộng chỉ ra kiến ​​trúc như nhóm resin.io đã thực hiện cho bộ chứa HAProxy ví dụ ARM đa container của họ :

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

Trong ví dụ được cung cấp, mỗi Dockerfile xây dựng từ một hình ảnh ngược dòng, cụ thể về kiến ​​trúc, khác nhau. Dockerfile cụ thể để sử dụng cho bản dựng có thể được chỉ định bằng cách sử dụng --file, -ftùy chọn khi xây dựng vùng chứa của bạn bằng dòng lệnh.


1
Tôi thích sử dụng một phần mở rộng để chỉ ra kiến ​​trúc (hoặc bất cứ điều gì). Không giống như một số câu trả lời khác, tất cả các Dockerfiles đều đơn giản để tìm thấy trong một thư mục lớn, lộn xộn; họ tự nhiên sắp xếp cùng nhau.
Mike Sherrill 'Nhớ lại mèo'

3

Dockerfilelà tốt nếu bạn chỉ có một tập tin docker (mỗi thư mục). Bạn có thể sử dụng bất kỳ tiêu chuẩn nào bạn muốn nếu bạn cần nhiều tệp docker trong cùng một thư mục - nếu bạn có lý do chính đáng. Trong một dự án gần đây có các tệp docker AWS và các tệp môi trường dev cục bộ vì các môi trường khác nhau đủ:

Dockerfile Dockerfile.aws


Tôi đã thấy phương pháp này được sử dụng để chỉ định kiến ​​trúc là tốt. Ví dụ, đặt một Dockerfile.armv7hfbên cạnh a Dockerfile.i386.
Josh Habdas

1

Dockerfile (tên và thư mục tùy chỉnh):

   docker/app.Dockerfile
   docker/nginx.Dockerfile

Xây dựng:

   docker build  -f ./docker/app.Dockerfile .
   docker build  -f ./docker/nginx.Dockerfile .
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.