Dockerfileに記述しているシェルスクリプト内で環境変数を設定したい。


rbenv をビルドして、rubyをインストールしようと思っています。

ubuntu16.04のイメージを使用して、rbenvをgithubからとってきて、ビルドし以下のようにして、rbenv
の初期化を実行しようとしたところ、`RUN rbenv global 2.3.3` のところでエラーになります。

[code]

    RUN echo 'eval "$(rbenv init -)" >> /root/.profile
    RUN . /root/.profile
    RUN rbenv install 2.3.3
    RUN rbenv global 2.3.3
    RUN ruby -v
    
[/code]

調べていくと、`eval "$(rbenv init -)"`
で設定している環境変数が設定されていないようでした。ENVを使用すれば環境変数が設定できることは知っているのですが、今回はrbenvが自動で実行するスクリプト内で設定されているので、ENVは使えないのではないか？と思っています。なにか回避策はありますでしょうか。




Dockerfile の中の RUN
コマンドは、それぞれ別のシェルで実行されたはずです。なので、ひとつのシェルコマンドにしてしまえば、正しく動くと考えられます。

[code]

    RUN echo 'eval "$(rbenv init -)" >> /root/.profile && \
        . /root/.profile && \
        rbenv install 2.3.3 && \
        rbenv global 2.3.3 && \
        ruby -v
    
[/code]




Dockerfile の中の RUN
コマンドは、それぞれ別のシェルで実行されたはずです。なので、ひとつのシェルコマンドにしてしまえば、正しく動くと考えられます。

[code]

    RUN echo 'eval "$(rbenv init -)" >> /root/.profile && \
        . /root/.profile && \
        rbenv install 2.3.3 && \
        rbenv global 2.3.3 && \
        ruby -v
    
[/code]

