2016-05-13 20 views
6

Tôi đang cố gắng sử dụng một Dockerfile cho cả sản xuất và phát triển của mình. Sự khác biệt duy nhất giữa sản xuất và phát triển là các biến môi trường mà tôi đã đặt. Vì vậy, tôi muốn một cách nào đó nhập khẩu các biến môi trường từ một tập tin. Trước khi sử dụng Docker tôi chỉ cần làm như sauBiến môi trường của Docker từ một tập tin

. ./setvars 
./main.py 

Tuy nhiên, nếu sự thay đổi ./main.py với Docker tương đương

. ./setvars 
docker run .... ./main.py 

sau đó các biến sẽ được trên các máy chủ và không thể truy cập từ dụ Docker. Tất nhiên một hack nhanh chóng và dơ bẩn sẽ làm cho một tập tin với

#!/bin/bash 
. ./setvars 
./main.py 

và chạy mà trong ví dụ. Tuy nhiên điều đó sẽ thực sự khó chịu, vì tôi có rất nhiều kịch bản mà tôi muốn chạy (với các biến môi trường giống nhau), và sau đó sẽ phải tạo thêm một kịch bản cho tất cả mọi người.

Có giải pháp nào khác để nhận các biến môi trường bên trong docker mà không sử dụng Dockerfile khác và phương pháp tôi đã mô tả ở trên không?

Trả lời

9

Tùy chọn tốt nhất của bạn là sử dụng cờ -e hoặc --env-file của lệnh docker run.

  • Cờ -e cho phép bạn chỉ định cặp khóa/giá trị của biến env,
    ví dụ:

    docker run -e ENVIRONMENT=PROD 
    

    Bạn có thể sử dụng một số thời gian -e cờ để xác định nhiều env
    biến . Ví dụ: bản thân trình đăng ký docker có thể cấu hình được với -e flags, xem: https://docs.docker.com/registry/deploying/#running-a-domain-registry

  • --env-file cho phép bạn chỉ định tệp. Nhưng mỗi dòng của tập tin phải loại VAR = VAL

Full tài liệu:

https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables-e-env-env-file

+1

Perfect! '' '--env-file''' là các thay đổi hoàn hảo, rất nhỏ đối với các tập tin cài đặt của tôi. Cảm ơn bạn! – Smarties89

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