Docker WORKDIR路径已添加到相对路径
我有一个问题,下面的DOCKERFILE在异常中结束,它找不到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
/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的信息