2016-04-20 18 views
5

Tôi có một số tệp docker-compose.yml mà tôi muốn sử dụng cùng một Dockerfile với một biến thể nhỏ. Vì vậy, tôi muốn vượt qua một đối số để Dockerfile đó để tôi có thể làm một cái gì đó hơi khác nhau tùy thuộc vào giá trị bất kỳ biến được thiết lập để.Chuyển một biến đến một Dockerfile từ tệp docker-compose.yml

Những gì tôi đã cố gắng cho đến nay

Docker-soạn-A.yml nộp nộp

version: '2' 

services: 
    django: 
    build: 
     context: . 
     dockerfile: ./docker/Dockerfile 
     args: 
     - SOMETHING=foo 

Docker-soạn-B.yml

version: '2' 

services: 
    django: 
    build: 
     context: . 
     dockerfile: ./docker/Dockerfile 
     args: 
     - SOMETHING=bar 

Tôi có một dockerfile Tôi muốn sử dụng SOMETHING in.

# Dockerfile 
RUN echo $SOMETHING 

Điều đó không hiệu quả. SOMETHING không được chuyển tới dockerfile.

Tôi có làm điều này không chính xác hoặc đây không phải là mục đích sử dụng không?

Có cách nào khác để truyền biến cho Dockerfile từ tệp docker-compose.yml không?

Mọi phản hồi đều được đánh giá cao. Cảm ơn

+1

Bạn đã giới thiệu 'ARG SOMETHING' trong Dockerfile chưa? – Lauri

+0

sử dụng ENV tốt hơn, xem https://docs.docker.com/engine/reference/builder/#env – user2915097

+0

@Lauri tuyệt vời! Cảm ơn –

Trả lời

11

Về cơ bản tôi đã bỏ lỡ tuyên bố arg trong Dockerfile.

# docker-compose.yml file 

version: '2' 

services: 
    django: 
    build: 
     context: . 
     dockerfile: ./docker/Dockerfile 
     args: 
     - SOMETHING=foo 

 

# Dockerfile 
ARG SOMETHING 
RUN echo $SOMETHING 


Shoutout để @Lauri đã cho con thấy ánh sáng.

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