Docker - shish/shimmie2 GitHub Wiki
If you just want to run shimmie inside docker, there's a pre-built image in dockerhub - shish2k/shimmie2
- which can be used like:
docker run -p 8000:8000 -v /my/hard/drive:/app/data shish2k/shimmie2
With the use of SQLite as a database, this should have everything you need to run a moderately-sized site in a self-contained way, all persistent data living in the /app/data directory.
There are various options settable with environment variables:
UID=1000
/GID=1000
- which user ID to run asINSTALL_DSN
- specify a data source to install into, to skip the installer screen, eg-e INSTALL_DSN="pgsql:user=shimmie;password=6y5erdfg;host=127.0.0.1;dbname=shimmie"
PHP_INI_*
set php.ini variables, egPHP_INI_UPLOAD_MAX_FILESIZE=50M
- set the web-server level upload size limits (Shimmie's own filesize limits can't go any higher than whatever this is set to)PHP_INI_MAX_FILE_UPLOADS=100
- set the web-server level limit on number of files
Build custom image
If you want to build your own image from source:
docker build -t shimmie2 .
And then:
docker run -p 8000:8000 -v /my/hard/drive:/app/data shimmie2 -d
Adding custom themes
If you have a custom theme in /my/folder/with/theme, you can connect that folder to docker like
-v /my/folder/with/theme:/app/themes/mytheme
and then mytheme
should show up as an option in the Board Config
Eg
docker run -p 8000:8000 -v /home/shish/website/database:/app/data -v /home/shish/website/theme:/app/themes/mytheme shish2k/shimmie2
Adding custom extensions
Similar to themes, eg
-v /my/folder/with/extension:/app/ext/myext
And then myext
should show up in the Extension Manager page
Run with external database
SQLite typically handles tends of users and tens of thousands of images pretty easily, and keeps sysadmin work very minimal. If you're dealing with hundreds of users or hundreds of thousands of images, you might want a more heavyweight database, in which case we'd recommend using postgresql. To run shimmie and postgres as a pair, you can use docker compose
with a docker-compose.yml
file like so:
services:
sql:
image: postgres:15-alpine
container_name: shimmie-sql
restart: unless-stopped
user: 1000:1000
environment:
POSTGRES_USER: shimmie
POSTGRES_PASSWORD: shimmie
volumes:
- ./db:/var/lib/postgresql/data
shimmie:
image: shish2k/shimmie2:2
container_name: shimmie
restart: unless-stopped
environment:
POSTGRES_HOST: sql
POSTGRES_USER: shimmie
POSTGRES_PASSWORD: shimmie
INSTALL_DSN: "pgsql:user=shimmie;password=shimmie;host=sql;dbname=shimmie"
ports:
- 8000:8000
volumes:
- ./data:/app/data
- ./theme:/app/themes/mysitetheme
- ./ext:/app/ext/mysiteext