mirror of
https://github.com/nickyeoman/docker-compose-cookbooks.git
synced 2026-09-04 02:46:23 +00:00
83 lines
2.9 KiB
Markdown
83 lines
2.9 KiB
Markdown
# Docusaurus
|
||
|
||
## Overview
|
||
|
||
Docusaurus is an open source static site generator for building
|
||
documentation websites. This stack runs the Docusaurus dev server
|
||
directly from a `node` image against a project mounted from the host,
|
||
so you can scaffold and preview a docs site without installing Node
|
||
locally.
|
||
|
||
## Project Details
|
||
|
||
- **Project Repository:** https://github.com/facebook/docusaurus
|
||
- **Container Image:** [Docker Hub](https://hub.docker.com/_/node)
|
||
- **Compose Example:** N/A (no official Docusaurus image; this stack runs the CLI on top of `node`)
|
||
- **Documentation:** [Docusaurus Docs](https://docusaurus.io/docs)
|
||
- **Reverse Proxy Port:** `3000`
|
||
|
||
## Getting Started
|
||
|
||
1. Start the container: `docker compose up -d`
|
||
2. On first run, with an empty volume, the container scaffolds a new
|
||
classic Docusaurus site with `create-docusaurus` before starting
|
||
the dev server — this can take a minute
|
||
3. Open http://localhost:3000 in your browser
|
||
4. Edit files under the mounted volume on the host; the dev server
|
||
hot-reloads on changes
|
||
|
||
## Environment Variable Notes
|
||
|
||
- `DOCUSAURUS_IMAGE` – Node image to run Docusaurus on (default: `node:20-alpine`)
|
||
- `DOCUSAURUS_PORT` – Host port to expose the dev server on (default: `3000`)
|
||
- `DOCUSAURUS_RESTART` – Restart policy (default: `unless-stopped`)
|
||
|
||
## Volume Notes
|
||
|
||
- `/app` – Docusaurus project source (`docusaurus.config.js`, `docs/`,
|
||
`package.json`, etc.); mounted from `${VOL_PATH:-/data}/docusaurus`
|
||
so the site persists and is editable from the host. If this
|
||
directory has no `package.json`, the container scaffolds a fresh
|
||
classic-template site into it on startup.
|
||
|
||
## Network Notes
|
||
|
||
Requires proxy network
|
||
|
||
## Docker Run
|
||
|
||
```bash
|
||
docker run -d \
|
||
--name=docusaurus \
|
||
-e HOST=0.0.0.0 \
|
||
-v /data/docusaurus:/app \
|
||
-w /app \
|
||
-p 3000:3000 \
|
||
node:20-alpine \
|
||
sh -c "apk add --no-cache git >/dev/null 2>&1 || true; [ -f package.json ] || npx --yes create-docusaurus@latest . classic --skip-install --package-manager npm; npm install; npm start -- --host 0.0.0.0"
|
||
```
|
||
|
||
## Additional Notes / Gotchas
|
||
|
||
- This is a dev-server stack, not production hosting — it runs
|
||
`npm start`, which serves an unoptimized, hot-reloading build.
|
||
For production, build a static bundle (`npm run build`) and serve
|
||
it from a static file server or CDN instead.
|
||
- `npm install` runs on every container start, so the first start
|
||
after scaffolding (and any restart) takes longer than subsequent
|
||
ones once `node_modules` is cached in the volume.
|
||
- Because the entire project lives in the bind-mounted volume,
|
||
deleting the volume wipes the docs site along with it — back it up
|
||
like any other source tree.
|
||
|
||
## Dockhand Stack, Deploy from Git
|
||
|
||
Cookbooks Repository
|
||
stackname: docusaurus
|
||
Compose file path: docusaurus_dev/compose.yaml
|
||
Additional env file (optional): docusaurus_dev/sample.env
|
||
|
||
Then "Load" docusaurus_dev/sample.env into the Environmental variables in dockhand
|
||
|
||
Create the Stack
|