2016-09-08 2 views
3

Я пытаюсь закрепить мою весеннюю аппликацию.Докер. Весеннее приложение. set & get переменная окружения

Проблема: Я не могу получить переменную окружения в своем приложении 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 build и docker-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 = значение в команде запуска.

Так что, если это кот вы можете установить в $ JAVA_OPTS = "... -DJDBC_CONNECTION_STRING = $ JDBC_CONNECTION_STRING"

+1

, как установить, что в докер? – user1935987

+0

Вы писали: «Когда я подключаюсь к bash контейнера, команда set не показывает мою переменную, но echo $ JDBC_CONNECTION_STRING показывает значение». поэтому вам нужно передать значение переменной среды в java-системное свойство, просто добавьте строку, написанную выше в файле catalina.conf, и перестройте изображение. –

+0

yes done done, thnx. – user1935987

0

Вы можете сделать docker run -e JDBC_CONNECTION_STRING=WHATEVER