Dokku with SQLite?

digital-ocean, dokku, flask-sqlalchemy, sqlalchemy, sqlite

Solution

Why wouldn't this work?

Dokku creates containers via Docker, and your application runs inside this container and its file system. Besides, your flask apps doesn't have access to `/home/dokku` by design.

Depending on your specific needs and as long as you have a single docker container:

use a path inside the container (e.g. /app/db.sqlite). This works as long as the app's container exists. Note however, that for all purpose you should consider the file system of a Dokku app as temporary.

map a host file that is resident on the dokku host, e.g. using the dokku-persistent-storage plugin.

use docker data volumes. At time of writing this, there doesn't seem to be a dokku plugin, but it is relatively simple to make (needs a `create` command to create a data container, a `link` command to link it to the app, finally a `dokku-args` hook to generate the arguments to `docker run`)

Problem

I've read elsewhere that SQLite is not supported by Dokku. Why not? I'm using a Flask app with SQLAlchemy and it seems like that is where all the abstraction is taking place. Couldn't I just place the sqlite database file somewhere on disk (/home/dokku/database/my_db, perhaps?) and give that to SQLAlchemy? ``` engine = create_engine('sqlite://///home/dokku/database/my_db') ``` More specifically, I would use Dokku to store that string as an environmental variable, rather than pass it in directly. Why wouldn't this work?

Original source