2015-10-29 37 views
7

Vì vậy, tôi biết bạn có thể vượt qua các biến môi trường để một container Docker sử dụng -e như:Cách chuyển thuộc tính Hệ thống vào vùng chứa docker?

docker run -it -e "var=var1" myDockerImage 

Nhưng tôi cần phải vượt qua một tài sản Hệ thống để một container Docker, bởi vì đây là cách tôi chạy JAR của tôi:

java -Denviroment=dev -jar myjar.jar 

Vậy làm cách nào để chuyển thuộc tính Hệ thống -D trong Docker? Giống như:

docker run -it {INSERT Denviroment here} myDockerImage 
+0

@downvoters xin giải thích hoặc cung cấp câu trả lời – feco

Trả lời

11

Sử dụng các biến bạn chuyển vào container trên lệnh java:

docker run -it -e "ENV=dev" myDockerImage 
java -Denvironment=$ENV -jar myjar.jar 
2

Người ta cũng có thể sử dụng start.sh EntryPoint sau cho container Docker, hãy chắc chắn để sử dụng cú pháp mảng, ví dụ:

Dockerfile:

... 
ENTRYPOINT ["/start.sh"] 

Các thực tế start.sh kịch bản:

#!/bin/bash 
export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64" 
exec $JAVA_HOME/bin/java -jar myjar.jar [email protected] 

Sau đó, bạn chỉ có thể vượt qua các thuộc tính hệ thống Java trực tiếp cho ứng dụng của bạn như các đối số chứa Docker chạy:

docker run myDockerImage "-Dvar=var1" 
Các vấn đề liên quan