无法从Dockerfile运行源命令

时间:2018-08-22 15:36:14

标签: docker dockerfile

这是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 和其他几个问题,但仍不能解决问题。

2 个答案:

答案 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(尝试,如果失败则忽略),(如果成功则仅尝试),使错误消息消失