すべての環境変数を読み込んだシェルスクリプトを作成しようとしています。その中で変数を使用し、評価後に再エクスポートします。各環境変数を評価し、ubuntuに戻す
が例 - 私は、環境変数は次のように公開しました:
echo $JVM_OPTS
-Djava.awt.headless=true -Xmx1600m -Djava.rmi.server.hostname=${CONTAINER_IP} -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Duser.language=en -Duser.country=US -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:CMSIncrementalDutyCycleMin=0
echo $CONTAINER_IP
10.44.214.63
は今、私はevalの "JVM_OPTS" 変数とに$ JVM_OPTSに$ {CONTAINER_IP}の値を代入する必要があります10.44.214.63。最後に、この評価値をJVM_OPTS変数に戻します。
サンプル出力:
echo $JVM_OPTS
-Djava.awt.headless=true -Xmx1600m -Djava.rmi.server.hostname=10.44.214.63 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Duser.language=en -Duser.country=US -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:CMSIncrementalDutyCycleMin=0
私の分析これまで: 私は仕事
#!/bin/bash
for path in $(printenv); do
path=`eval echo $path`
echo $path
done
printenvのは全体のenvを与えるだろう行うには、以下のコードを書きました。変数と値を指定します。私はちょうど名前が必要とし、値を使用します。
これを行うには?
ここで「/ JVM_OPTS」はいつ割り当てられますか? 'JVM_OPTS'が代入される前に' CONTAINER_IP'を設定するだけでは大丈夫ですか? –
いいえ、実際にCONTAINER_IPがDockerの実行に引数として送信されています。 Dockerのコンパイル時に変数JVM_OPTSが設定されています。 実行時まで、私はCONTAINER_IPの値を知らないでしょう。 –
イメージ作成時に残りの値が設定されていても、ブート時に 'CONTAINER_IP '値を使って' JVM_OPTS'をあらかじめ設定しておくことができます。 –