2016-03-24 3 views
1

Я пытаюсь получить версию из файла pom, чтобы впоследствии использовать ее в другой команде. Таким образом, внутри файла докеров я имею,Как создать и использовать переменную внутри докеры?

RUN VERSION="$(mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version|grep -Ev '(^\[|Download\w+:)')" 
RUN echo $VERSION 

Но эхо ничего не печатает. То, что я на самом деле хочу, чтобы запустить это,

RUN mv /abc/abc-${VERSION}.jar /abc/abc.jar 

ответ

1

, если сгруппировать 2 строки в одном, он будет работать

RUN VERSION="$(mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version|grep -Ev '(^\[|Download\w+:)')" ; echo $VERSION

рекомендуемый способ, конечно, решение, предложенное Илья Peterov, я подозреваю, что вы хотите использовать его позже в вашем Dockerfile

Я возьму другой пример, если у вас есть сценарий в а/myscript.sh

RUN cd abc ; ./myscript

будет работать, в то время как RUN cd abc RUN ./myscript

потерпит неудачу, поскольку он не будет находиться в директории аЬс

2

Используйте ENV так, это путь Docker дэвы хотят, чтобы вы это сделать:

ENV VERSION "$(mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version|grep -Ev '(^\[|Download\w+:)')" 
RUN echo $VERSION 

Существует пример являются Документами, что очень похоже на ваш случай: https://docs.docker.com/engine/reference/builder/#environment-replacement

+0

Тхи s - правильный ответ –

Смежные вопросы