Developing With Docker Run

Developing themes and building sites with Docker run.

Firstly, you’ll need to choose the proper image tag for your themes and sites, in this section, we take hugomods/hugo:exts as the example.

Change Current Working Directory

Change current working directory to your project root.

1cd my-site

Install Dependencies (Optional)

You may want to install the dependencies before running Hugo server, such as install dependencies via npm.

1docker run \
2  -v ${PWD}:/src \
3  -v ${HOME}/hugo_cache:/tmp/hugo_cache \
4  hugomods/hugo:exts \
5  npm i
1docker run `
2  -v ${PWD}:/src `
3  -v ${HOME}/hugo_cache:/tmp/hugo_cache `
4  hugomods/hugo:exts `
5  npm i
  1. -v ${PWD}:/src mounts current working directory on the default working directory(/src) inside the Docker container.
  2. $HOME/hugo_cache:/tmp/hugo_cache mounts $HOME/hugo_cache on the default cacheDir (/tmp/hugo_cache) to improve build performance.
  3. npm i replaces the default command(hugo version), which is the shorthand of npm install.

Start Hugo Server

1docker run -p 1313:1313 \
2  -v ${PWD}:/src \
3  -v ${HOME}/hugo_cache:/tmp/hugo_cache \
4  hugomods/hugo:exts \
5  hugo server --bind 0.0.0.0
1docker run -p 1313:1313 `
2  -v ${PWD}:/src `
3  -v ${HOME}/hugo_cache:/tmp/hugo_cache `
4  hugomods/hugo:exts `
5  hugo server --bind 0.0.0.0
  1. -p port:port mapping from host machine port to container port.

Using another port than 1313, such as 8080.

1docker run -p 8080:8080 \
2  -v ${PWD}:/src \
3  -v ${HOME}/hugo_cache:/tmp/hugo_cache \
4  hugomods/hugo:exts \
5  hugo server --bind 0.0.0.0 -p 8080
1docker run -p 8080:8080 `
2  -v ${PWD}:/src `
3  -v ${HOME}/hugo_cache:/tmp/hugo_cache `
4  hugomods/hugo:exts `
5  hugo server --bind 0.0.0.0 -p 8080