gpt4 book ai didi

Docker WORKDIR 路径添加到相对路径

转载 作者:行者123 更新时间:2023-12-02 18:34:25 27 4
gpt4 key购买 nike

我遇到以下 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 run test
internal/modules/cjs/loader.js:969
throw err;
^

Error: Cannot find module '/src/webui/tail -f /dev/null'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:966:15)
at Function.Module._load (internal/modules/cjs/loader.js:842:27)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}

系统信息:

  • Docker 桌面(Windows 10 专业版)
  • Docker 版本 19.03.8,构建 afacb8b

最佳答案

当您以 JSON 数组形式提供 CMD(或 RUNENTRYPOINT)时,您有责任手动分解命令变成“话”。也就是说,您正在运行与引用的 shell 命令等效的命令

'tail -f /dev/null'

整个事情被解释为一个“单词”——空格和选项被作为命令名称的一部分在 $PATH 中查找。

对此最直接的解决方法是删除引号并仅使用裸字符串作为 CMD

请注意,您正在构建的容器实际上不会执行任何操作:它不包含任何应用程序源代码,并且您有意提供的命令永远不会执行任何操作。除了一个正在运行的容器有一个空闲进程之外,您可以通过根本不运行该容器来获得相同的效果。您通常希望复制您的应用程序代码并设置 CMD 以实际运行它:

FROM node:12.17.0-alpine
WORKDIR /src/webui
COPY package.json yarn.lock ./
RUN yarn install
COPY . ./
CMD ["yarn", "start"]
# Also works: CMD yarn start
# Won't work: CMD ["yarn start"]

关于Docker WORKDIR 路径添加到相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62062052/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com