--- title: quartz-docker draft: false date: 2025-01-16 --- [quartz-docker image](https://code.modernleft.org/gravityfargo/-/packages/container/quartz-docker/v4.4.0) ```bash 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. ## 🚀 Features - configurable with environment variables - node and nginx included - configurable cron for job to pull and build site ## 🛠️ Getting Started ### 🐳 Docker Compose See a list of all Environment Variables [[environment variables|here.]] 1. Create a data directory and pull your existing content ```bash git clone https://code.modernleft.org/gravityfargo/modernleft-docs.git quartz ``` 2. Create a `docker-compose.yml` file #### Minimal ![[minimal docker-compose]] ##### `BASE_URL` The only required variable is `BASE_URL`. The rest are set to the developer's [defaults](https://quartz.jzhao.xyz/configuration) `BASE_URL` sets both quartz's `baseUrl` as well as nginx's `server_name`. #### Recommended ![[recommended docker-compose]] ##### node_modules volume To keep the image small, `node_modules` are not included. When the container is run, they're downloaded to `/usr/share/nginx/html/node_modules`. You should keep them in a volume so that the modules persist between container runs. ##### [[cron]] You should also set `ENABLE_CRON` to `true` and set `BUILD_SCHEDULE` to a cron expression to enable the schedule that `npx quartz build` is executed with. This will pull the latest content and build the site.