Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker WORKDIR路径已添加到相对路径_Docker_Dockerfile - Fatal编程技术网

Docker WORKDIR路径已添加到相对路径

Docker WORKDIR路径已添加到相对路径,docker,dockerfile,Docker,Dockerfile,我有一个问题,下面的DOCKERFILE在异常中结束,它找不到/src/webui/tail-f/dev/null,这是正确的,因为我只想执行tail-f/dev/null docker构建工作正常,docker运行失败 如何避免将WORKDIR路径添加到tail命令 DOCKERFILE: FROM node:12.17.0-alpine WORKDIR /src/webui RUN apk update && apk add bash CMD ["tail -f /dev/n

我有一个问题,下面的DOCKERFILE在异常中结束,它找不到
/src/webui/tail-f/dev/null
,这是正确的,因为我只想执行
tail-f/dev/null

docker构建工作正常,docker运行失败

如何避免将WORKDIR路径添加到tail命令

DOCKERFILE:

FROM node:12.17.0-alpine
WORKDIR /src/webui
RUN apk update && apk add bash
CMD ["tail -f /dev/null"]
异常

>docker运行测试
内部/modules/cjs/loader.js:969
犯错误;
^
错误:找不到模块'/src/webui/tail-f/dev/null'
在Function.Module.\u解析文件名(internal/modules/cjs/loader.js:966:15)
at Function.Module._load(内部/modules/cjs/loader.js:842:27)
在Function.executeUserEntryPoint[作为runMain](internal/modules/run_main.js:71:12)
在internal/main/run_main_module.js:17:47{
代码:“未找到模块”,
requireStack:[]
}
系统信息:

FROM node:12.17.0-alpine
WORKDIR /src/webui
RUN apk update && apk add bash
CMD ["tail -f /dev/null"]
  • Docker桌面(Windows 10 Pro)
  • Docker版本19.03.8,构建afacb8b

CMD
将在
入口点之后追加

自节点:12.17.0-1有默认的
ENTRYPONINT节点

您的dockerfile将成为

node tail -f /dev/null
选择1 在构建时重写入口点

ENTRYPOINT tail -f /dev/null
选择2 在运行时重写入口点

docker run --entrypoint sh my-image

当您以JSON数组形式给出
CMD
(或
RUN
ENTRYPOINT
)时,您负责手动将命令分解为“字”。也就是说,您正在运行与引用的shell命令等效的命令

'tail-f/dev/null'
整个过程被解释为一个“单词”——空格和选项作为命令名的一部分,在
$PATH
中查找

最简单的解决方法是删除引号,只需使用一个空字符串作为
CMD

请注意,您正在构建的容器实际上没有做任何事情:它不包含任何应用程序源代码,并且您有意提供的命令永远不会做任何事情。除了一个正在运行的容器和一个空闲的进程之外,完全不运行容器也可以获得同样的效果。您通常希望在中复制应用程序代码,并将
CMD
设置为实际运行:

来自节点:12.17.0-1
WORKDIR/src/webui
复制package.json.lock/
粗纱机
复制/
CMD[“纱线”,“开始”]
#也可以工作:CMD纱线开始
#无法工作:CMD[“纱线开始”]

正确的Dockerfile:

FROM node:12.17.0-alpine
WORKDIR /src/webui
RUN apk update && apk add bash
CMD ["tail", "-f", "/dev/null"]
所以区别在于:

CMD ["tail -f /dev/null"]
需要:

CMD ["tail", "-f", "/dev/null"]
您可以在官方Docker中阅读更多有关CMD的信息