2016-09-08 32 views
3

私はSpringアプリケーションをドッキングしようとしています。ドッカー。 Springアプリケーション。環境変数を設定して取得する

問題: 私のSpringアプリケーションでは、ドッカーコンテナから環境変数を取得できません。

春の設定(2つのオプションは、個別に試してみました)

<bean class="java.net.URI" id="dbUrl"> 
    <constructor-arg value="#{systemProperties['JDBC_CONNECTION_STRING']}"/> 
</bean> 

<bean class="java.net.URI" id="dbUrl"> 
    <constructor-arg value="#{systemEnvironment['JDBC_CONNECTION_STRING']}"/> 
</bean> 

もJavaで

URI dbUrl = URI.create(System.getProperty("JDBC_CONNECTION_STRING")); 

マイドッキングウィンドウのコンフィグを試してみました。値を更新するたびにdocker-compose builddocker-compose upを使用しました。

ドッキングウィンドウ-compose.yml

app: 
    build: . 
    command: catalina.sh run 
    ports: 
    - "8888:8080" 
    links: 
    - postgres 
    volumes: 
    - /usr/bin 

postgres: 
    image: postgres:9.5 
    ports: 
    - "5432" 
    volumes: 
    - /var/lib/postgresql/data 

Dockerfile

FROM tomcat:jre8 

ENV JDBC_CONNECTION_STRING 'postgres://postgres:[email protected]:5432/mydb' 

RUN ["rm", "-fr", "/usr/local/tomcat/webapps/ROOT"] 
RUN apt-get update && apt-get install -y net-tools postgresql-client 

COPY ./target/myapp.war /usr/local/tomcat/webapps/ROOT.war 

CMD ["catalina.sh", "run"] 

私はコンテナのバッシュに接続すると、setコマンドは私の変数を表示しません。 しかし値を示すecho $JDBC_CONNECTION_STRING

答えて

2

Javaコードでは、システム環境変数ではなくJavaシステムプロパティを使用しています。システムプロパティをjavaプロセスに渡すには、コマンドを実行する際に-Dkey = valueを指定する必要があります。

これはTomcatのであればあなたは$ JAVA_OPTSを中に設定することができます= "... -DJDBC_CONNECTION_STRING = $ jdbc_connection_stringは"

+1

を行うことができますか? – user1935987

+0

あなたは "私はコンテナのbashに接続すると、setコマンドは自分の変数を表示しませんが、値を示す$ JDBC_CONNECTION_STRINGをエコーし​​ます。"あなたはjavaシステムのプロパティに環境変数の値を渡すだけで、上記のcatalina.confに書いた行を追加して、イメージを再構築します。 –

+0

はい、すでに完了しています。 – user1935987

0

あなたは、ドッキングウィンドウにそれを設定する方法をdocker run -e JDBC_CONNECTION_STRING=WHATEVER

関連する問題