Skip to content

Commit

Permalink
Add Docker to run docsy user guide locally (google#1016)
Browse files Browse the repository at this point in the history
Add support to run the docsy website server locally inside a container.
With support for both `docker` and `docker-compose`.

The folder is mounted as a shared volume, allowing changes to be picked up
by the container. The `node_modules` folder is kept in a volume, to
avoid surfacing those files in the host folder.

The documentation explains how to run the container as the host user, so
you don't end up with files like `package.json` and `.hugo-build.lock`
owned by root on the host os.

Co-authored-by: LisaFC <lcarey@google.com>
  • Loading branch information
2 people authored and fekete-robert committed Sep 13, 2022
1 parent a89d690 commit ce70e1e
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 0 deletions.
9 changes: 9 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
FROM klakegg/hugo:0.95.0-ext-alpine as docsy-user-guide

RUN apk update
RUN apk add git
COPY package.json /app/docsy/userguide/
WORKDIR /app/docsy/userguide/
RUN npm install --production=false

CMD ["serve", "--cleanDestinationDir", "--themesDir ../..", "--baseURL http://localhost:1313/", "--buildDrafts", "--buildFuture", "--disableFastRender", "--ignoreCache", "--watch"]
14 changes: 14 additions & 0 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
version: "3.3"

services:

site:
image: docsy/user-guide
build:
context: .
ports:
- "1313:1313"
user: "${DOCSY_USER}"
volumes:
- /app/docsy/userguide/node_modules
- .:/app/docsy
45 changes: 45 additions & 0 deletions userguide/content/en/docs/Contribution guidelines/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,51 @@ If you want to run your own local Hugo server to preview your changes as you wor
1. Continue with the usual GitHub workflow to edit files, commit them, push the
changes up to your fork, and create a pull request.

#### Preview your changes using a Docker container

Docsy comes with `Dockerfile` and `docker-compose` files to run the server
locally with Docker, without installing any additional dependencies.

- Using [Docker]:

1. Build the Docker container:

```bash
docker build -t docsy/user-guide
```

1. Run the container, mounting the repository as a shared volume:

```bash
docker run -it --user=$(id -u):$(id -g) -p 1313:1313 \
-v $(pwd):/app/docsy -v /app/docsy/userguide/node_modules \
docsy/user-guide
```

- Using [Docker Compose][docker-compose]:

1. Build the container:

```bash
docker-compose build
```

1. Run the container:

```bash
DOCSY_USER=$(id -u):$(id -g) docker-compose up
```

Open `http://localhost:1313` in your web browser to load the docsy user guide.
In most cases, docsy will automatically reload the site to reflect any changes
to the documentation or the code. Changes to some parts of the docsy code may
require manually reloading the page or re-starting the container.

Press **Ctrl + C** to stop the container.

[docker]: https://docs.docker.com/get-docker/
[docker-compose]: https://docs.docker.com/compose/install/

### Creating an issue

If there's something you'd like to see in the docs, but you're not sure how to fix it yourself, please create an issue in [this repository](https://github.com/google/docsy). You can also create an issue about a specific page by clicking the **Create Issue** button in the top right hand corner of the page.
Expand Down

0 comments on commit ce70e1e

Please sign in to comment.