Developing themes and building sites with Docker Compose.
Become a backer or sponsor to support our work.
Firstly, you’ll need to choose the proper image tag for your themes and sites, in this section, we take hugomods/hugo:exts-non-root
as the example.
And then create docker-compose.yml
on your project root.
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yml" data-lang="yml"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">mysite</span><span class="w">
2 3services: 4 server: 5 image: hugomods/hugo:exts-non-root 6 command: server -D 7 volumes: 8 - ./:/src 9 - ~/hugo_cache:/tmp/hugo_cache 10 ports: 11 - 1313:1313
Please note that --bind 0.0.0.0
is required when using hugo server
, otherwise Hugo server may not receive any incoming requests from host.
Since 0.136.2
, both of server
and hugo server
bind 0.0.0.0
by default.
Since 0.128.0
, server
is available as an alias of hugo server
, which will bind 0.0.0.0
by default.
-v ./:/src
mounts current working directory on the default working directory(/src
) inside the Docker container.-v ~/hugo_cache:/tmp/hugo_cache
mounts $HOME/hugo_cache
on the default cacheDir
(/tmp/hugo_cache
) to improve build performance.Skip this step if your site/theme doesn’t require it.
You may want to install the dependencies before running Hugo server, such as install dependencies via npm.
1docker compose run server npm i
npm i
replaces the default command of server
service, which is the shorthand of npm install
.1docker compose up server
1docker compose run server /bin/sh