3.3 KiB
title | draft | date |
---|---|---|
quartz-docker | false | 2025-01-16 |
docker pull code.modernleft.org/gravityfargo/quartz-docker:v4.4.0
This project runs Quartz v4.4.0, a fast, batteries-included static site generator, inside a Docker container. It transforms Markdown content into a fully functional website.
While Quartz provides Docker support, it is not as self contained as this project.
🐳 Docker Compose Setup
Create a data directory
mkdir -p /srv/quartz
services:
quartz-docker:
container_name: quartz-docker
image: code.modernleft.org/gravityfargo/quartz-docker:dev
ports:
- 80:80
environment:
USER_ID: 1000
GROUP_ID: 1001
SERVER_NAME: "docs.modernleft.org"
ENABLE_CRON: "true"
BUILD_SCHEDULE: "*/30 * * * *"
CONTENT_REPO: "https://code.modernleft.org/gravityfargo/modernleft-docs.git"
volumes:
- /srv/quartz:/quartz
First Run
docker-compose up -d
docker stop quartz-wiki
On first run, the container will download the necessary dependencies, build the site, and download the content repository.
After that, you can configure whatever you would like in /srv/quartz/src
using the stock options found in the quartz documentation Bare minimum should be baseUrl
and
🥳 Done! 🎉
⚙️ Configuration
Optional node_modules
volume
To keep the image small, node_modules
are not included. When the container is run, they are downloaded to /usr/share/nginx/html/node_modules
. Mounting this as a volume ensures they persist between container runs, reducing setup time.
cron
This is the command run by cron
cd /quartz/content
git restore .
git pull
cd /quartz/src &
npx quartz build
echo 'Content Updated.'
Setting ENABLE_CRON
to true
and defining BUILD_SCHEDULE
performs these actions.
If you need help configuring Crontab.guru - The cron schedule expression generator is a useful tool for that
Example:
environment:
ENABLE_CRON: "true"
BUILD_SCHEDULE: "*/1 * * * *" # Runs every minute
Environment Variables
Variable | Description | Default Value |
---|---|---|
USER_ID |
UID that /content and /config will be chown'd to. |
1000 |
GROUP_ID |
GID that /content and /config will be chown'd to. |
1000 |
NGINX_PORT |
Port for the Nginx server | 80 |
SERVER_NAME |
NGINX server name | quartz.zhao.xyz |
ENABLE_CRON |
Enables scheduled builds (true or false ) |
false |
BUILD_SCHEDULE |
Cron expression for scheduling site builds | "*/10 * * * *" every 10 min |
CONTENT_REPO |
URL of the content repository |