/root/.profile
で定義されているbash関数nvm
があります。 docker build
私はRUN
のステップでそれを呼び出すと、その関数を見つけることができませんでした。Dockerfileでbash関数を実行する方法
RUN apt-get install -y curl build-essential libssl-dev && \
curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh
RUN nvm install 0.12 && \
nvm alias default 0.12 && \
nvm use 0.12
エラーが
Step 5 : RUN nvm install 0.12
---> Running in b639c2bf60c0
/bin/sh: nvm: command not found
私は/root/.profile
をロードする、bash -ic
でそれをラップすることにより、nvm
を呼び出すことに成功しています。
RUN bash -ic "nvm install 0.12" && \
bash -ic "nvm alias default 0.12" && \
bash -ic "nvm use 0.12"
上記の方法がうまく動作しますが、それは警告
bash: cannot set terminal process group (1): Inappropriate ioctl for device
bash: no job control in this shell
を持っており、私が知りたいのは、それが通常のバイナリだとしてbash -ic
せずに直接bashの関数を呼び出すための簡単かつクリーンな方法がありますラッピング?たぶん
RUN load_functions && \
nvm install 0.12 && \
nvm alias default 0.12 && \
nvm use 0.12
'RUNのはbash -c「NVMは0.12''トリックを行う必要が0.12 && NVMエイリアスデフォルト0.12 && NVMの使用をインストールします。それはあなたのために働くのですか? (あなたのコンテナがどのように詳細に見えているかわからないので、私は100%確信していません) – hek2mgl
うまくいきます。しかし、私はより良い解決策を探しています。 – Quanlong
私の答えを確認してください。シェルスクリプトは、シェルスクリプトを実行する最もクリーンな方法です。 – hek2mgl