“docker build”需要1个参数

e5nszbig  于 2023-06-21  发布在  Docker
关注(0)|答案(6)|浏览(168)

我试图从一个特定的Dockerfile构建一个镜像,同时标记它;我正在按照docker build的联机说明进行操作,但收到以下错误:
“docker build”需要1个参数

我的目录结构:

project/
    foo/
    MyDockerfile

这是我运行的命令:
docker build -f /full/path/to/MyDockerfile -t proj:myapp
我尝试了上述命令的各种组合,但结果总是上面给出的错误消息。为什么会发生这种情况-因为我正在遵循文档中的说法?

b0zn9rqh

b0zn9rqh1#

参数-f更改Dockerfile的名称(当它不同于常规Dockerfile时)。它不是用来传递docker build的完整路径的。路径作为第一个参数。
语法是:
docker build [PARAMS] PATH
所以在你的情况下,这应该起作用:
docker build -f MyDockerfile -t proj:myapp /full/path/to/
或者如果你在项目目录下,你只需要使用a点
docker build -f MyDockerfile -t proj:myapp .

6qftjkof

6qftjkof2#

docker build .

不要错过“点”。

roqulrg3

roqulrg33#

答:请投票支持Krzysztof的答案。没有他的暗示,我不知所措.
B、我的贡献
我可以为--file参数使用完整路径。

docker build --build-arg JAR_FILE="/source/java/mystuff/build/libs/mything-1.0.10-SNAPSHOT.jar" --file /full/path/to/MyDockerfile -t proj:myapp .

我忘了最后那个小小的“.”。
哦!
“不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要,不要。!!

vyswwuz2

vyswwuz24#

sudo docker build -t my-app .

别忘了在末尾加上DOT
参考:https://docs.docker.com/get-started/02_our_app/

wmomyfyw

wmomyfyw5#

如果生成参数中有空格,也可能收到此错误。例如:

--build-arg AGENT_BUILDDIRECTORY = $(agent.builddirectory)

生成"docker build" requires exactly 1 argument.错误消息,并删除等号周围的空格

--build-arg AGENT_BUILDDIRECTORY=$(agent.builddirectory)

工作正常。

vnjpjtjt

vnjpjtjt6#

如果你正在将你的构建从shell脚本转换为i.e. gitlab-ci,由于不同的多行语法,你可能会遇到这个问题:
即shell脚本可能有:

docker build . -t the-something \
  --build-arg COMMIT_SHA=${CI_COMMIT_SHA}

wherease gitlab ci不需要多行结尾的反斜杠:

script:
- docker build . the-something
  --build-arg COMMIT_SHA=${CI_COMMIT_SHA}

如果保留尾部的反斜杠,它将成为命令行的一部分,并被视为参数。

相关问题