我在Dockerfile中的.bashrc中添加了许多内容,这些内容对于执行稍后要在Dockerfile中运行的一些命令是必需的,我试过source .bashrc,但不起作用。我尝试使用RUN /bin/bash -c --login ...,但出现错误:mesg: ttyname failed: inappropriate ioctl for device
source .bashrc
RUN /bin/bash -c --login ...
mesg: ttyname failed: inappropriate ioctl for device
wpcxdonn1#
Dockerfile中的每个命令都会创建一个新的临时容器,但不包含tty(issue 1870,在PR 4955中讨论过,但在PR 4882中关闭)。docker构建期间缺少tty会触发ttyname failed: inappropriate ioctl for device错误消息。您可以尝试运行一个 Package 器脚本,其中包含.bashrc。Dockerfile:
ttyname failed: inappropriate ioctl for device
.bashrc
Dockerfile
COPY myscript /path/to/myscript RUN /path/to/myscript
myscript:
myscript
#!/bin/bash source /path/to/.bashrc # rest of the commands
Abderrahim在评论中指出:在我的例子中,它是针对nvm的:它将init脚本添加到.bashrc,因此在Dockerfile上下文中不可用。最后用它的依赖命令制作了一个安装脚本。
nvm
init
1条答案
按热度按时间wpcxdonn1#
Dockerfile中的每个命令都会创建一个新的临时容器,但不包含tty(issue 1870,在PR 4955中讨论过,但在PR 4882中关闭)。
docker构建期间缺少tty会触发
ttyname failed: inappropriate ioctl for device
错误消息。您可以尝试运行一个 Package 器脚本,其中包含
.bashrc
。Dockerfile
:myscript
:Abderrahim在评论中指出:
在我的例子中,它是针对
nvm
的:它将init
脚本添加到.bashrc
,因此在Dockerfile上下文中不可用。最后用它的依赖命令制作了一个安装脚本。