I have a set up a volume with my sqlite file. The connection works and I can add data. Wehen I deploy the application, however, the database is empty again. Ist this a configuration on my side issue?
btw. how do you connect to a SQLite DB on the volume? Installing sqlite3 or can we mount the volume using wireguard and macfuse/sshfs?
Specify the location of the database by setting an environment variable, typically something like DATABASE_URL = "sqlite3:///mnt/volume/production.sqlite3". This can be done by setting a secret or even by edting the [env] section of your fly.toml.
remove any migrate instructions you may have from [deploy] section of your fly.tomll
create a small initialization script that does your database migrate followed by launching your server. Change your startup to involve this script. Depending on your setup, this may require changes to either your Dockerfile or your fly.toml.
→ the source is the name you’ve specified for the volume you created
→ the destination is the path to the folder your sqlite database file is located in
Let’s say your database file is located here: /var/www/html/storage/database/database.sqlite
You’ll want to make sure the path in your [mounts] section points to a directory where you can eventually arrive at the database.sqlite file, like: /var/www/html/storage/database
For a step by step guide on volumizing an SQLite database in a Laravel Fly App, you can also checkout our documentation here: Databases · Fly Docs ( NOTE: the guide above mounts the volume to /var/www/html/storage to persist data in the storage directory including the contents of its subdirectories, like /var/www/html/storage/database folder )
This works now. I basically followed SQLite in a Laravel Fly App and created a simple script in .fly/scripts to set up the storage directory with all the stuff Laravel and my app needs, including the sqlite file.