Dockerでコマンド実行結果を変数に入れられなくて困った話
Page content
Dockerfileではコマンド実行結果を変数に入れられない。それでも入れたい時の回避策。
問題
何がやりたかったかというとOracle JDKを入れたかった。
のですが、コマンド実行結果を変数に入れることができない。
RUN set -ex &&\
URL=$(curl -s http://www.oracle.com/technetwork/java/javase/downloads/index.html | egrep -m1 -o '/technetwork/java/javase/downloads/jdk8-downloads-[0-9]+\.html') && \
...
ENV
を使ってもできない。
ENV URL_SUFFIX=$(curl -s http://www.oracle.com/technetwork/java/javase/downloads/index.html | egrep -m1 -o '/technetwork/java/javase/downloads/jdk8-downloads-[0-9]+\.html')
回避策
すっきりした解決策は無さそうですが、.bashrc
に書けば一応は回避可能のようです。
RUN echo 'export URL="$(curl -s http://www.oracle.com/technetwork/java/javase/downloads/index.html | egrep -m1 -o '/technetwork/java/javase/downloads/jdk8-downloads-[0-9]+\.html')"' >> ~/.bashrc
ちなみに
この回避策は使わず、おとなしくOpenJDKに切り替えました。
RUN set -ex && \
yum -yq install java-1.8.0-openjdk && \
yum clean all