如何在 dockerfile 中重新加载 .bashrc

sam*_*sam 8 bash docker dockerfile

我在 Dockerfile 中的 .bashrc 中添加了很多东西,这是执行一些我想稍后在 Dockerfile 中运行的命令所必需的,
我厌倦了source .bashrc它不起作用。
我尝试使用,RUN /bin/bash -c --login ...但出现错误:mesg: ttyname failed: inappropriate ioctl for device

Von*_*onC 6

Dockerfile 中的每个命令都会创建一个新的临时容器,但没有 tty(issue 1870,在PR 4955 中讨论,但已关闭以支持PR 4882)。

在 docker 构建期间缺少 tty 会触发ttyname failed: inappropriate ioctl for device错误消息。

您可以尝试运行一个包装脚本,该脚本将在其中获取.bashrc.

Dockerfile

COPY myscript /path/to/myscript
RUN /path/to/myscript
Run Code Online (Sandbox Code Playgroud)

myscript

#!/bin/bash
source /path/to/.bashrc
# rest of the commands    
Run Code Online (Sandbox Code Playgroud)

阿卜杜勒-拉希姆指出的评论

在我的情况下,它是为了nvm:它添加了一个init脚本,.bashrc因此它在 Dockerfile 上下文中不可用。
最终用它的依赖命令制作了一个安装脚本。

  • 就我而言,它用于 [nvm](https://github.com/nvm-sh/nvm#installing-and-updating),它向 `.bashrc` 添加了一个 init 脚本,因此它在 Dockerfile 上下文中不可用。最终用它的依赖命令制作了一个安装脚本 (2认同)