docker-hugo

Dockerized Hugo CLI.

Docker Build Status

docker-hugo is a Dockerized Hugo CLI.

TagDockerfile
latest, 0.76.5Dockerfile
extended, 0.76.5-extendedDockerfile
docs, 0.76.5-docsDockerfile

Every image has the extended and docs variations. The first one contains the Hugo extended version binary, and the second one is the Hugo website.

Usage

$ docker run --rm -v /path/to/my/site/:/site/ \
    ntrrg/hugo [OPTIONS] [COMMAND]

Any command from the Hugo CLI might be used, for extra information use docker run --rm ntrrg/hugo help or see the official documentation.

Note

Since the Hugo binary from the container is called by root, it is recommendable to add the -u Docker flag.

$ docker run --rm -v /path/to/my/site/:/site/ \
    -u $(id -u $USER) \
    -v ${TMPDIR:-/tmp/}:/tmp/ \
    ntrrg/hugo [OPTIONS] [COMMAND]

Examples

  • Create a new Hugo skeleton
$ docker run --rm -v /path/to/my/site/:/site/ \
    ntrrg/hugo new site .
  • Build a Hugo project
$ docker run --rm -v /path/to/my/site/:/site/ ntrrg/hugo
  • Run the Hugo server
$ docker run --rm -i -t -p 1313:1313 \
    -v /path/to/my/site/:/site/ \
    ntrrg/hugo server -DEF --baseUrl=/ \
        --bind=0.0.0.0 --appendPort=false
  • Run the Hugo server with a custom port
$ export PORT=8080
$ docker run --rm -i -t -p $PORT:$PORT \
    -v /path/to/my/site/:/site/ \
    ntrrg/hugo server -DEF --bind=0.0.0.0 --port=$PORT \
        --baseUrl=/ --appendPort=false

Acknowledgment

Working on this project I use/used:

Websocket for LiveReload using wrong port if Hugo binds to port 80. https://github.com/gohugoio/hugo/issues/2205