im trying to install the Hugo tool in docker file following this guideline
https://gohugo.io/getting-started/installing/#debian-and-ubuntu
What I did is the following
FROM debian:11.3
RUN apt-get update
&& apt-get install -y --no-install-recommends
hugo
RUN ["hugo version"]
The docker build working except the last statement RUN ["hugo version"]
the error is > [3/3] RUN ["hugo version"]: #7 0.173 container_linux.go:380: starting container process caused: exec: "hugo version": executable file not found in $PATH
how can I add it to the path, I assume that if I download it it should be there but no. any idea?
UPDATE
when I change it to
RUN hugo version
I got the following output without the version printed, any idea what am I missing here?
#7 [3/3] RUN hugo version
#7 sha256:d032565cca2aac041e6791690dbcb32f2dc9d024d05699f67d21eb51cb39b0fc
#7 CACHED
#8 exporting to image
#8 sha256:e8c613e07b0b7ff33893b694f7759a10d42e180f2b4dc349fb57dc6b71dcab00
#8 exporting layers done
#8 writing image sha256:db76bafd84f0bdf930625714a72e2d0e1967578c48df0ffd0b4fc869c802f18f done
#8 DONE 0.0s
2
Answers
When docker build executes the line:
RUN hugo version
, then by default, it does not show the output of the run commands that were not loaded from the cache. And hence you are not seeing its output.When I ran docker build command with this flag:
--progress=plain
, I could see the output of "non-cached" line for RUN command. More details can be found in this answer. Here is the screenshot for the output I got:A few observations:
--progress=plain
shows intermediate steps of the lines that are not cached or freshly executed.So, if you wish to view the output, you need to first clear your docker build cache and all the dangling images using the commands:
After this step, you will be able to freshly execute all your build steps and will be able to see output of
RUN hugo version
.CMD
orENTRYPOINT
command. The command specified with these dockerfile instructions are executed only when you spin a container from the image that you have already built, not when the image is being built. For example if my dockerfile is:The output during build would be:
The instruction
CMD hugo version
is not executed.After I run a container from this built image via command:
Then only I would see the output of this instruction coming.
I hope this helps in building the understanding!
You can run the
docker build
command with--no-cache
to see the output without cache:Full Dockerfile:
Full command:
This displays:
Also, you need to keep the command and parameters separate when using the []-syntax, so it would look like
RUN ["hugo", "version"]