Knitwit is an open-source knitting pattern generator.
To try it out, see knitwit.dynkarken.com.
You can run knitwit locally by cloning this repository and running make run. This make target should take care of creating a virtual env and installing dependencies.
To set up dokku for this repository, we need to mount the patterns directory to the local static/data directory of the knitwit application:
dokku storage:mount knitwit /home/arnfred/patterns:/app/static/data/
For some reason I usually can't seem to see the git repository when the app is first created. To fix this, run:
dokku git:initialize knitwit
To make sure that knitwit keeps working, I've added a root crontab that runs every morning at 05:00 UTC:
sudo crontab -l
0 5 * * * /usr/bin/dokku ps:restart knitwit
To edit it, use sudo crontab -e.
Every so often, the knitwit application seems to stop, and I lazily restart it by pushing an empty commit. I'm not inclined to spend a lot of time debugging this, but I'll jot down a few notes here for the sake of slowly getting it resolved.
On Jan 27 2021 the app stopped with the following failure in the logs:
2021-01-27T00:38:45.357670229Z app[web.1]: python2.7: unable to extent pixel cache `Cannot allocate memory' @ fatal/cache.c/CacheSignalHandler/3326.
I ran the following command to inspect the memory usage on the box:
sudo docker stats --no-stream --format "table {{.Name}}\t{{.Container}}\t{{.MemUsage}}" | sort -k 3 -h -r
photos.web.1 d12d8835bd4b 260.1MiB / 1.947GiB
photo-tools.web.1 36a4cf6b8a73 97.27MiB / 1.947GiB
photo-tools.web.1.1582474017 bee9adde24ba 59.22MiB / 1.947GiB
photo-tools.web.1.1582480561 cc03cacb5fe2 50.77MiB / 1.947GiB
kind.web.1 8ef9d3815283 47.75MiB / 1.947GiB
penrose.web.1 6a33d06ade1b 22.92MiB / 1.947GiB
dynkarken.com.web.1 e9babd476019 2.902MiB / 1.947GiB
The box has 1Gb of memory. If it were a memory leak in any of the other applications, I'd suspect the memory usage would still be high, since they haven't been reset. It might be a memory leak in the knitwit application, or something else might have required memory at the same time as the app was accessed.
When deploying I got the following error:
nginx: [emerg] unknown directive "charset" in /app/nginx/nginx.conf:13
From what I can see, the answer is to delete the dokku cache on the host: dokku/heroku-buildpack-nginx#43
ssh dynkarken.com
sudo rm -rf /home/dokku/knitwit/cache/*
Knitwit is licensed under the MIT license (http://opensource.org/licenses/MIT)