我在 dockerfile 上有一些腳本,旨在將asdf的插件 ruby?? 插件安裝在Github 代碼空間的客戶容器上(使用 devcontainer.json、docker-compose、dockerfile ...)。
Dockerfile:
RUN git clone --depth 1 https://github.com/asdf-vm/asdf.git $HOME/.asdf && \
echo '. $HOME/.asdf/asdf.sh' >> $HOME/.bashrc && \
echo '. $HOME/.asdf/completions/asdf.bash' >> $HOME/.bashrc && \
echo '. $HOME/.asdf/asdf.sh' >> $HOME/.profile
第一部分作業正常。我敢肯定,因為如果我只運行上面的這個 RUN 時鐘,我可以構建我的 github 代碼空間而不會出現任何錯誤,而且我也確定 asdf 確實安裝了,因為我通過命令終端檢查它
$ sudo su
$ asdf list
這會從 asdf 輸出一條訊息,顯示它確實安裝了:
no plusins installed
但是下面的第二部分,我嘗試安裝 asdf 的 ruby?? 插件,得到一個錯誤:
RUN $HOME/.bashrc && \
# install asdf ruby plugin
asdf plugin add ruby https://github.com/asdf-vm/asdf-ruby.git && \
# add ruby version
asdf install ruby $RUBY_VERSION && \
# set our machine e.g our container's global Ruby version
asdf global ruby $RUBY_VERSION
我得到的錯誤是:
/bin/sh: 1: /root/.bashrc: Permission denied
對于錯誤輸出的更大背景關系,命令輸出的終端顯示:
#6 [ 3/11] RUN git clone --depth 1 https://github.com/asdf-vm/asdf.git $HOME/.asdf && echo '. $HOME/.asdf/asdf.sh' >> $HOME/.bashrc && echo '. $HOME/.asdf/completions/asdf.bash' >> $HOME/.bashrc && echo '. $HOME/.asdf/asdf.sh' >> $HOME/.profile
#6 0.746 Cloning into '/root/.asdf'...
#6 DONE 1.6s
#7 [ 4/11] RUN $HOME/.bashrc && asdf plugin add ruby https://github.com/asdf-vm/asdf-ruby.git && asdf install ruby latest && asdf global ruby latest
#7 0.658 /bin/sh: 1: /root/.bashrc: Permission denied
#7 ERROR: executor failed running [/bin/sh -c $HOME/.bashrc && asdf plugin add ruby https://github.com/asdf-vm/asdf-ruby.git && asdf install ruby $RUBY_VERSION && asdf global ruby $RUBY_VERSION]: exit code: 126
我為這個 RUN 塊的第一行嘗試了不同的東西,但我總是遇到某種錯誤:
如果我這樣做RUN sudo $HOME/.bashrc,我得到了錯誤
sudo: /root/.bashrc: command not found
如果我這樣做RUN sudo su $HOME/.bashrc,我會收到錯誤訊息:
su: user /root/.bashrc does not exist or the user entry does not contain all the required fields
如果我這樣做RUN su vscode $HOME/.bashrc了,我得到了錯誤:
bash: /root/.bashrc: Permission denied
我是 docker 的非常早期的初學者,所以我找不到如何繞過這個并安裝 ruby?? 插件
uj5u.com熱心網友回復:
第二次 RUN 應該是這樣的:
RUN bash -c "source $HOME/.bashrc && asdf plugin add ruby https://github.com/asdf-vm/asdf-ruby.git && asdf install ruby RUBY_VERSION && asdf global ruby $RUBY_VERSION"
是的,這很丑陋,但老實說,我不知道打破界限是否安全。
關鍵是您必須獲取.bashrc以將其應用于所有剩余命令。
uj5u.com熱心網友回復:
.bashrc是每次您登錄(打開終端)時運行的檔案/腳本,您不能像手動運行任何其他腳本一樣運行它。
您可以嘗試這樣的事情,RUN exec $HOME/.bashrc或者RUN source $HOME/.bashrc像任何其他腳本一樣運行它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/493503.html
標籤:轨道上的红宝石 linux 码头工人 github 自卫队
下一篇:Github中的默認分支或標簽
