2015-07-08 20 views
7

Có cách nào để xây dựng nhiều hình ảnh bằng cách quản lý hai dockerfiles khác nhau không? Trong trường hợp của tôi, tôi muốn giữ hai dockerfile giả sử Dockerfile_app1 Dockerfile_app2 trong bối cảnh xây dựng.Xây dựng nhiều hình ảnh từ nhiều dockerfile

docker build -t <image_name> . 

trên sẽ chọn dockerfile đặt tên như Dockerfile

docker build -t <image_name> Dockerfile_app1 

này cũng không hoạt động đối với trường hợp của tôi như Nó mong đợi tên tập tin như Dockerfile.

Tôi đã thử bằng cách Docker-soạn cũng xây dựng. Tuy nhiên nó không hoạt động.

app1: 
    build: Dockerfile_app1 
    ports: 
    - "80:80" 
app2: 
    build: Dockerfile_app2 
    ports: 
    - "80:80" 
+0

Chỉ thị 'build' trong' docker-compose.yml' của bạn mong đợi một thư mục chứ không phải tên tệp. Lệnh 'docker build' cho phép bạn chỉ định tên khác với' Dockerfile'; kiểm tra trang người đàn ông hoặc đầu ra trợ giúp (và đảm bảo rằng bạn đang chạy bản phát hành Docker gần đây). – larsks

Trả lời

19

Chỉ cần sử dụng đối số -f-docker build để xác định tên của Dockerfile sử dụng:

$ docker build -t <image_name> -f Dockerfile_app1 . 
... 

Hoặc trong Soạn bạn có thể sử dụng dockerfile quan trọng từ phiên bản 1.3 trở đi:

app1: 
    build: . 
    dockerfile: Dockerfile_app1 
    ports: 
    - "80:80" 
app2: 
    build: . 
    dockerfile: Dockerfile_app2 
    ports: 
    - "80:80" 

Lưu ý rằng khóa build là dành cho ngữ cảnh xây dựng, không phải là tên của Dockerfile (vì vậy nó tìm kiếm một thư mục có tên là Dockerfile_app1 trong trường hợp của bạn).

+0

Cảm ơn Adrian, nó hoạt động nếu tôi đang sử dụng docker build -t -f Dockerfile_app1 tùy chọn. Tuy nhiên tôi đang nhận được "tùy chọn cấu hình không được hỗ trợ cho dịch vụ app2: 'dockerfile'" tin nhắn nếu tôi đang cố gắng xây dựng nó bằng cách sử dụng xây dựng docker-compose. Tôi có làm điều gì sai? – Mahattam

+0

Bạn đang sử dụng phiên bản Compose nào? Có thể bạn chỉ cần nâng cấp. 'dockerfile' phải chính xác: https://docs.docker.com/compose/yml/ –

+1

Tôi đã có 1.2.0 không hoạt động, sau khi cập nhật lên 1.3.1 nó hoạt động tốt cho tôi, Cảm ơn :) – Mahattam

Các vấn đề liên quan