这是Dockerfile中的脚本。当我直接进入docker并手动运行命令时,它可以正常工作,但是为什么不能从Dockerfile中访问
。Dockerfile:
type ArgType = string | ArrayBuffer | Uint8Array | Readable | ReadableStream;
export function foo(x: ArgType): void;
export function bar(x: ArgType): string;
export function baz(x: ArgType): number;
export {};
错误:
消息:ttyname失败:设备的ioctl不适当
我尝试过一些解决方案,例如将其运行为
FROM ubuntu:16.04
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN apt-get update
RUN apt-get install -y build-essential libssl-dev
RUN apt-get install -y curl git sudo
RUN curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh -o install_nvm.sh
RUN /bin/sh install_nvm.sh
RUN source ~/.profile
和其他几个问题,但仍不能解决问题。
答案 0 :(得分:0)
尝试用以下命令替换您的命令。
RUN /bin/bash -c "source ~/.profile"
答案 1 :(得分:0)
这与以下问题非常相似:How to solve 'ttyname failed: Inappropriate ioctl for device' in Vagrant?
在~/.profile
中有一行:
mesg n || true
那是不兼容的。为了对其进行修复,请以tty是否可用为条件(credit Gogowitsch):
RUN sed -i ~/.profile -e 's/mesg n || true/tty -s \&\& mesg n/g'
此sed命令将mesg n || true
替换为tty -s && mesg n
(尝试,如果失败则忽略),(如果成功则仅尝试),使错误消息消失