

Dockerを利用して、仮想環境でrbenvを導入しようとしていますが`rbenv install`の部分でPATHが通っていないとエラーが出てしまいます。  
Dockerfileは下記の通りです。

[code]

    FROM centos:centos7
    
    # gitをインストール
    RUN yum -y install git
    
    # rbenvをインストール
    RUN git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
    RUN echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
    RUN echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
    RUN exec $SHELL -l
    RUN echo $PATH
    RUN git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
    RUN ["rbenv", "install", "-v", "2.2.3"]
    RUN ["rbenv", "rehash"]
    RUN ["rbenv",  "global",  "2.2.3"]
    
[/code]

build実行時のログは下記の通りです。

[code]

    Sending build context to Docker daemon  2.56 kB
    Step 1 : FROM centos:centos7
     ---> 0f0be3675ebb
    Step 2 : MAINTAINER Test
     ---> Using cache
     ---> da0472c69ce1
    Step 3 : RUN yum -y install git
     ---> Using cache
     ---> 24b5366b0d4d
    Step 4 : RUN git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
     ---> Using cache
     ---> 1859d24d8942
    Step 5 : RUN echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
     ---> Using cache
     ---> 940d5514a25c
    Step 6 : RUN echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
     ---> Using cache
     ---> 747ad3b73095
    Step 7 : RUN exec $SHELL -l
     ---> Using cache
     ---> f2a32ad3625c
    Step 8 : RUN echo $PATH
     ---> Running in 13448ff76c37
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
     ---> e4cf92d0f3e4
    Removing intermediate container 13448ff76c37
    Step 9 : RUN git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
     ---> Running in 1309b521d2e2
    Cloning into '/root/.rbenv/plugins/ruby-build'...
     ---> 4c892315923a
    Removing intermediate container 1309b521d2e2
    Step 10 : RUN rbenv install -v 2.2.3-p173
     ---> Running in da7cc2ecf7e1
    exec: "rbenv": executable file not found in $PATH
    Container command not found or does not exist.
    
[/code]

途中echo $PATHで確認していますがやはりPATHが通っていないようです。  
アドバイスいただけると助かります。  
よろしくお願いします。


CC BY-SA 3.0
2016-02-22T01:05:37.133
22365
2020-04-11T13:38:02.960
2020-04-11T13:31:56.920
19110
12232
question
docker rbenv
Dockerfileで環境変数PATHが設定されない


  * Dockerfile で環境変数を設定するのは RUN ではなく ENV を使います。RUN だとその RUN が終わるところまでしかその変更が反映されません。
  * `~/.bash_profile` は non-login shell では読み込まれず、また各 RUN でも読み込まれません。今回のように環境変数の設定を書きたいのであればやはり ENV を使います。
  * Docker イメージとして使う場合、rbenv のバージョン管理機能は不要では無いでしょうか。[この回答](https://ja.stackoverflow.com/a/65542/19110)のように ruby-build だけを使う方法で充分そうです。


CC BY-SA 4.0
2020-04-11T13:38:02.960
65543
2020-04-11T13:38:02.960
19110
22365
answer