dockerize
This commit is contained in:
parent
1eca81cd1d
commit
d83611f12a
4
.dockerignore
Normal file
4
.dockerignore
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
.git
|
||||||
|
.env
|
||||||
|
env
|
||||||
|
**/__pycache__
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,6 +1,7 @@
|
|||||||
*.swp
|
*.swp
|
||||||
|
.env
|
||||||
env
|
env
|
||||||
n
|
n
|
||||||
web
|
web
|
||||||
planning.txt
|
planning.txt
|
||||||
__pycache__
|
**/__pycache__
|
||||||
|
28
Dockerfile
Normal file
28
Dockerfile
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
FROM python:3.12-bookworm
|
||||||
|
|
||||||
|
ARG ARCH=
|
||||||
|
|
||||||
|
ENV BUILDARCH=${ARCH}
|
||||||
|
ENV GRONK_CSS_DIR=./css
|
||||||
|
ENV GRONK_JS_DIR=./js
|
||||||
|
ENV GRONK_TEMPLATES_DIR=./templates
|
||||||
|
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
|
RUN mkdir /notes
|
||||||
|
RUN mkdir /web
|
||||||
|
|
||||||
|
VOLUME /usr/src/app/notes
|
||||||
|
VOLUME /usr/src/app/web
|
||||||
|
|
||||||
|
RUN apt-get update \
|
||||||
|
&& wget -O ./pandoc.deb https://github.com/jgm/pandoc/releases/download/3.1.11/pandoc-3.1.11-1-${BUILDARCH}.deb \
|
||||||
|
&& apt install -y -f ./pandoc.deb \
|
||||||
|
&& rm ./pandoc.deb
|
||||||
|
|
||||||
|
COPY requirements.txt ./
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
CMD [ "python3", "-u", "gronk.py", "--output-dir", "./web", "./notes" ]
|
11
docker-compose.yml
Normal file
11
docker-compose.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
gronk:
|
||||||
|
build:
|
||||||
|
context: '.'
|
||||||
|
args:
|
||||||
|
ARCH: ${ARCH}
|
||||||
|
volumes:
|
||||||
|
- '${SOURCE}:/usr/src/app/notes'
|
||||||
|
- '${OUTPUT}:/usr/src/app/web'
|
2
gronk.py
2
gronk.py
@ -28,8 +28,6 @@ GRONK_JS_DIR = Path(os.getenv("GRONK_JS_DIR", "/opt/gronk/js"))
|
|||||||
GRONK_TEMPLATES_DIR = Path(
|
GRONK_TEMPLATES_DIR = Path(
|
||||||
os.getenv("GRONK_TEMPLATES_DIR", "/opt/gronk/templates/"))
|
os.getenv("GRONK_TEMPLATES_DIR", "/opt/gronk/templates/"))
|
||||||
|
|
||||||
print(f"{GRONK_TEMPLATES_DIR=}")
|
|
||||||
|
|
||||||
JINJA_ENV = jinja2.Environment(
|
JINJA_ENV = jinja2.Environment(
|
||||||
loader=jinja2.FileSystemLoader(searchpath=GRONK_TEMPLATES_DIR),
|
loader=jinja2.FileSystemLoader(searchpath=GRONK_TEMPLATES_DIR),
|
||||||
autoescape=jinja2.select_autoescape)
|
autoescape=jinja2.select_autoescape)
|
||||||
|
37
readme.md
37
readme.md
@ -19,8 +19,30 @@ Tested with [pandoc v2.19.2](https://github.com/jgm/pandoc/releases/tag/2.19.2).
|
|||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
|
### Docker
|
||||||
|
|
||||||
|
Run the following, modifing the `-v` arguments as needed to mount the correct folders and
|
||||||
|
setting the value of `ARCH` to either `amd64` or `arm64` as appropriate.
|
||||||
|
|
||||||
|
```
|
||||||
|
docker build . -t gronk --build-arg ARCH=amd64
|
||||||
|
docker run -v ./n:/usr/src/app/notes -v ./web:/usr/src/app/web gronk
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Compose
|
||||||
|
|
||||||
|
A [docker compose file](./docker-compose.yml) file has been provided.
|
||||||
|
|
||||||
|
Set the following environment variables (or create a .env file) and run `docker compose up`:
|
||||||
|
|
||||||
|
- `ARCH`
|
||||||
|
- `SOURCE`
|
||||||
|
- `OUTPUT`
|
||||||
|
|
||||||
|
### Locally
|
||||||
|
|
||||||
0. Install [Pandoc](https://pandoc.org/index.html) and [Pip](https://github.com/pypa/pip), python3-dev, and a C compiler
|
0. Install [Pandoc](https://pandoc.org/index.html) and [Pip](https://github.com/pypa/pip), python3-dev, and a C compiler
|
||||||
1. Run `make install` as root
|
1. `sudo make install`
|
||||||
|
|
||||||
## Other Things to Know
|
## Other Things to Know
|
||||||
|
|
||||||
@ -98,7 +120,18 @@ $ gronk.py notes_directory
|
|||||||
|
|
||||||
Output of `gronk.py --help`:
|
Output of `gronk.py --help`:
|
||||||
|
|
||||||
TODO add cli output
|
```
|
||||||
|
usage: gronk.py [-h] [-o OUTPUT_DIR] [-F] notes
|
||||||
|
|
||||||
|
positional arguments:
|
||||||
|
notes
|
||||||
|
|
||||||
|
options:
|
||||||
|
-h, --help show this help message and exit
|
||||||
|
-o OUTPUT_DIR, --output-dir OUTPUT_DIR
|
||||||
|
-F, --force Generate new output html even if source file was modified before output
|
||||||
|
html
|
||||||
|
```
|
||||||
|
|
||||||
The command will generate a website in the `output-dir` directory (`./web` by default).
|
The command will generate a website in the `output-dir` directory (`./web` by default).
|
||||||
It will then generate a list of all note files and put it in `index.html`.
|
It will then generate a list of all note files and put it in `index.html`.
|
||||||
|
Reference in New Issue
Block a user