次のDockerfile(一部省略)を使用してDockerコンテナーを作成しました。
FROM ubuntu:12.04
# curl enables downloading of other things
RUN apt-get install curl -y
# download and install rvm...
RUN \curl -L https://get.rvm.io | bash -s stable
# ... so that we can install ruby
RUN /bin/bash -l -c "rvm requirements"
等々。
これはすべて機能しますが、私が抱えている問題は、パッケージのインストール方法/場所です。
を使用docker run [...] rvm
してrvmを実行docker run [...] /bin/bash -l -c "rvm"
しただけの場合、「rvmが見つかりません」というメッセージが表示されますが、実行すると機能します。(私は "-l -c"オプションをオンラインで見つけましたが、それらが何をしているのか分かりません、そして私が何をしているのかについて十分な説明が見つかりません!)
これはドッカーの質問ではありません-それはbash / * nixの質問です-物がどのように/どこにインストールされるかについて何かがあると思います、おそらくルートの下でインストールを実行することに関連していますか?
ただ明確にするために-CLIから直接インストールしたものを実行できるようにしたいのです。
編集1
rvmを使用してRubyをインストールすることをお勧めしますが、非インタラクティブ、非ログインシェル(つまり、Dockerコンテナー内)で実行したい場合は、パスと環境変数、および実行中のログインスクリプトに手間がかかりすぎます。 。
これを使用して、定義上分離されて回復可能なDockerコンテナーを実行している(別のコンテナーをビルドするだけ)とすると、バージョンの切り替えやパッケージの分離については特に気にしないので、Rubyをインストールすることにしました代わりにパッケージリポジトリ(http://brightbox.com/docs/ruby/ubuntu/)から。これは「うまくいく」だけです。
動作しない場合があります。Procfileを介してアプリを実行しているため、Foreman gemを取得するためにRubyをインストールしているだけなので、詳細についてはそれほど心配していません。Rubyアプリを作成している場合、私は私の助言には従いません。
私のDockerfileはここにあります、FWIW、https: //index.docker.io/u/yunojuno/dev/
からbash(1)
:
-l
ログインシェルとして呼び出されたかのようにbashを動作させる-c
-cオプションが存在する場合、コマンドは文字列から読み取られます。 -c
引数に渡されたコマンドを実行しています。-l
bashが最初に読み込むので、それをログインシェルになり/etc/profile
、おそらくパスに持っている、rvm
それが動作するものであるが。
FWIW、rvm
Dockerコンテナーにインストールする方法を次に示します。
# Install some dependencies
RUN apt-get -y -q install curl rubygems
# Install rvm
RUN curl -L https://get.rvm.io | bash -s stable
# Install package dependencies
RUN /usr/local/rvm/bin/rvm requirements
# Install ruby
RUN /usr/local/rvm/bin/rvm install ruby-2.0.0
# create first wrapper scripts
RUN /usr/local/rvm/bin/rvm wrapper ruby-2.0.0 myapp rake rails gem
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加