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 4, 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 requires additional configuration. This container simplifies the process significantly.
🚀 Features
- Easy Configuration – Customize settings using a json file
- Automated Site Updates – Configurable cron job to fetch and rebuild content
🐳 Docker Compose Setup
Prepare Data Directories
Create a data directory and pull your existing content
# create directories
mkdir -p /srv/quartz/config
cd /srv/quartz
# clone your content
git clone https://code.modernleft.org/gravityfargo/modernleft-docs.git content
Compose File
Create a docker-compose.yml
file:
!docker-compose
First Run
docker-compose up -d
docker stop quartz-wiki
On first run, the container will download the necessary dependencies and build the site.
In /srv/quartz/config/config.json
, you need to change the baseUrl
to your domain.
⚙️ 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 /usr/share/nginx/html/content && \
git pull >/dev/null 2>&1 && \
cd /usr/share/nginx/html && \
npx quartz build >/dev/null 2>&1
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
See a list of all environment variables here.
Variable | Description | Default Value |
---|---|---|
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 |
QUARTZ_CONFIG_PATH |
Path to the Quartz configuration file | /config/quartz.json |
You shouldn't need to change QUARTZ_CONFIG_PATH