我正在Dockerfile中添加许多东西到.bashrc,这是后面要运行的一些命令必须要有的,
我尝试了source .bashrc
但它并不能起作用。
我尝试使用RUN /bin/bash -c --login ...
但是我遇到了一个错误:mesg:ttyname失败:设备不当的ioctl
我正在Dockerfile中添加许多东西到.bashrc,这是后面要运行的一些命令必须要有的,
我尝试了source .bashrc
但它并不能起作用。
我尝试使用RUN /bin/bash -c --login ...
但是我遇到了一个错误:mesg:ttyname失败:设备不当的ioctl
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
myscript
:
#!/bin/bash
source /path/to/.bashrc
# rest of the commands
在我的情况下,这是对于
nvm
而言:它会向.bashrc
添加一个init
脚本,因此在Dockerfile环境中无法使用。
最终使用其依赖命令编写了安装脚本。
.bashrc
添加一个 init 脚本,因此它在 Dockerfile 上下文中无法使用。最终我编写了一个安装脚本,并添加了其依赖命令。 - Abderrahim
Dockerfile
并解释你想要完成什么。在.bashrc
中添加东西的要求本身就非常可疑。 - tripleee.bashrc
文件中添加一行source
,并将依赖项保存在外部文件中。这样做更加合理。 - tripleee