"docker build" requires exactly 1 argument(s)

I am trying to build an image from a specific Dockerfile, and tag it at the same time; I am following the online instructions fordocker build, but I get the following error:

"docker build" requires exactly 1 argument(s)

My directory structure:

project/
    foo/
    MyDockerfile

This is the command I run:

docker build -f /full/path/to/MyDockerfile -t proj:myapp

I have tried various combinations of the above command, but the results are always the error message given above. Why is this happening - as I am following what the documentation says?


Solution 1:

Parameter -f changes the name of the Dockerfile (when it's different than regular Dockerfile). It is not for passing the full path to docker build. The path goes as the first argument.

Syntax is:

docker build [PARAMS] PATH

So in your case, this should work:

docker build -f MyDockerfile -t proj:myapp /full/path/to/

or in case you are in the project directory, you just need to use a dot:

docker build -f MyDockerfile -t proj:myapp .

Solution 2:

docker build .

DO NOT MISS "THE DOT".

Solution 3:

A. Please upvote Krzysztof's answer. I was lost without his hints.

But B, my contribution.

I was able to use a full path for the --file argument.

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 .

I had forgotten that little "." at the end.

D'oh!

Aka, do NOT overlook the last little "." (period) at the end !!!