Compare commits
No commits in common. "5c2597498dd272fc0ba78234687141d15749dcb3" and "f83d404abe35ff7cb46ca77701ecafc07b34bffa" have entirely different histories.
5c2597498d
...
f83d404abe
2 changed files with 46 additions and 32 deletions
|
@ -10,32 +10,46 @@ date: 2025-01-16
|
||||||
docker pull code.modernleft.org/gravityfargo/quartz-docker:v4.4.0
|
docker pull code.modernleft.org/gravityfargo/quartz-docker:v4.4.0
|
||||||
```
|
```
|
||||||
|
|
||||||
This project runs **Quartz 4.4.0**, a fast, batteries-included static site generator, inside a **Docker container**. It transforms Markdown content into a fully functional website.
|
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](https://quartz.jzhao.xyz/features/Docker-Support), it is not as self contained as this project.
|
While Quartz provides [Docker support](https://quartz.jzhao.xyz/features/Docker-Support), it is not as self contained as this project.
|
||||||
|
|
||||||
|
I explored several alternative approaches for configuration within this container, but none met my criteria for simplicity—specifically, avoiding the need to mount the entire site source and instead only requiring a dedicated `content` and `config` directory.
|
||||||
|
|
||||||
|
## 🚀 Features
|
||||||
|
|
||||||
|
- **Easy Configuration** – Customize settings using a json file
|
||||||
|
- **Automated Site Updates** – Configurable cron job to fetch and rebuild content
|
||||||
|
|
||||||
## 🐳 Docker Compose Setup
|
## 🐳 Docker Compose Setup
|
||||||
|
|
||||||
Create a data directory
|
### Prepare Data Directories
|
||||||
|
|
||||||
|
Create a data directory and pull your existing content
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mkdir -p /srv/quartz
|
# 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:
|
Create a `docker-compose.yml` file:
|
||||||
|
|
||||||
![[docker-compose]]
|
![[docker-compose]]
|
||||||
|
|
||||||
**First Run**
|
### First Run
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
docker stop quartz-wiki
|
docker stop quartz-wiki
|
||||||
```
|
```
|
||||||
|
|
||||||
On first run, the container will download the necessary dependencies, build the site, and download the content repository.
|
On first run, the container will download the necessary dependencies and build the site.
|
||||||
You will also need to
|
|
||||||
|
In `/srv/quartz/config/config.json`, you need to change the `baseUrl` to your domain.
|
||||||
|
|
||||||
## ⚙️ Configuration
|
## ⚙️ Configuration
|
||||||
|
|
||||||
|
@ -48,12 +62,10 @@ To keep the image small, `node_modules` are not included. When the container is
|
||||||
This is the command run by cron
|
This is the command run by cron
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /quartz/content
|
cd /usr/share/nginx/html/content && \
|
||||||
git restore .
|
git pull >/dev/null 2>&1 && \
|
||||||
git pull
|
cd /usr/share/nginx/html && \
|
||||||
cd /quartz/src &
|
npx quartz build >/dev/null 2>&1
|
||||||
npx quartz build
|
|
||||||
echo 'Content Updated.'
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Setting `ENABLE_CRON` to `true` and defining `BUILD_SCHEDULE` performs these actions.
|
Setting `ENABLE_CRON` to `true` and defining `BUILD_SCHEDULE` performs these actions.
|
||||||
|
@ -63,18 +75,22 @@ Example:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
environment:
|
environment:
|
||||||
ENABLE_CRON: "true"
|
ENABLE_CRON: true
|
||||||
BUILD_SCHEDULE: "*/1 * * * *" # Runs every minute
|
BUILD_SCHEDULE: "*/1 * * * *" # Runs every minute
|
||||||
```
|
```
|
||||||
|
|
||||||
### Environment Variables
|
### Environment Variables
|
||||||
|
|
||||||
| Variable | Description | Default Value |
|
See a list of all environment variables [here](#environment-variables).
|
||||||
| ---------------- | ----------------------------------------------------- | ----------------------------- |
|
|
||||||
| `USER_ID` | UID that` /content` and` /config` will be chown'd to. | `1000` |
|
| Variable | Description | Default Value |
|
||||||
| `GROUP_ID` | GID that` /content` and` /config` will be chown'd to. | `1000` |
|
| -------------------- | ----------------------------------------------------- | ----------------------------- |
|
||||||
| `NGINX_PORT` | Port for the Nginx server | `80` |
|
| `NGINX_PORT` | Port for the Nginx server | `80` |
|
||||||
| `SERVER_NAME` | NGINX server name | `quartz.zhao.xyz` |
|
| `SERVER_NAME` | NGINX server name | `quartz.zhao.xyz` |
|
||||||
| `ENABLE_CRON` | Enables scheduled builds (`true` or `false`) | `false` |
|
| `ENABLE_CRON` | Enables scheduled builds (`true` or `false`) | `false` |
|
||||||
| `BUILD_SCHEDULE` | Cron expression for scheduling site builds | `"*/10 * * * *"` every 10 min |
|
| `BUILD_SCHEDULE` | Cron expression for scheduling site builds | `"*/10 * * * *"` every 10 min |
|
||||||
| `CONTENT_REPO` | URL of the content repository | |
|
| `QUARTZ_CONFIG_PATH` | Path to the Quartz configuration file | `/config/quartz.json` |
|
||||||
|
| `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` |
|
||||||
|
|
||||||
|
You shouldn't need to change `QUARTZ_CONFIG_PATH`
|
||||||
|
|
|
@ -1,17 +1,15 @@
|
||||||
```yaml
|
```yaml
|
||||||
services:
|
services:
|
||||||
quartz-docker:
|
quartz-wiki:
|
||||||
container_name: quartz-docker
|
container_name: quartz-wiki
|
||||||
image: code.modernleft.org/gravityfargo/quartz-docker:dev
|
hostname: quartz-wiki
|
||||||
|
image: code.modernleft.org/gravityfargo/quartz-docker:v4.4.0
|
||||||
ports:
|
ports:
|
||||||
- 80:80
|
- 80:80
|
||||||
environment:
|
environment:
|
||||||
USER_ID: 1000
|
|
||||||
GROUP_ID: 1001
|
|
||||||
SERVER_NAME: "docs.modernleft.org"
|
SERVER_NAME: "docs.modernleft.org"
|
||||||
ENABLE_CRON: "true"
|
ENABLE_CRON: "true"
|
||||||
BUILD_SCHEDULE: "*/30 * * * *"
|
BUILD_SCHEDULE: "*/10 * * * *"
|
||||||
CONTENT_REPO: "https://code.modernleft.org/gravityfargo/modernleft-docs.git"
|
|
||||||
volumes:
|
volumes:
|
||||||
- /srv/quartz:/quartz
|
- /srv/quartz/content:/quartz
|
||||||
```
|
```
|
||||||
|
|
Loading…
Reference in a new issue