
So, I upgraded my server to the latest Ubuntu release and Wallabag broke. I remember I had a tough time upgrading Wallabag. So this time, I decided to run it as a Docker container to avoid issues.
Unfortunately, this also had a few challenges!
Most of the stuff on my server run using flat files or SQLite databases, so I referred to the official Wallabag docs for running it on Docker. It gave the docker run command, but I wanted it as a docker-compose.yml file instead.
To convert the docker run command to a docker-compose.yml file I headed over to the Composorize site and got this.
version: "3"
services:
wallabag:
image: wallabag/wallabag
container_name: wallabag
volumes:
- /opt/wallabag/data:/var/www/wallabag/data
- /opt/wallabag/images:/var/www/wallabag/web/assets/images
ports:
- 80:80
environment:
- SYMFONY__ENV__DOMAIN_NAME=http://localhost
However, when I ran this I got some weird error!
[+] Building 0.0s (0/0) [+] Running 1/1 ✔ Container wallabag Recreated 8.0s Attaching to wallabag wallabag | Starting wallabag ... wallabag | wc: /var/www/wallabag/data/db/wallabag.sqlite: No such file or directory wallabag | Configuring the SQLite database ... ...... wallabag | SQLSTATE[HY000] [14] unable to open database file wallabag exited with code 14
This was strange! Finally after searching for the error, I came across a response on Github –
Upon investigation, the problem seems to be that it tries and fails to create the file
/var/www/wallabag/data/db/wallabag.sqlite.It can fail for 2 reasons:
- It requires the sub-directory
dbto already exist.- It tries to create the SQLite file as the user
nobodyand fails unless that user has write-access to thedbdirectory.
Essentially, the docker mount volumes have to have a different user:group setting and the db directory needs to exist.
Ran the following commands –
mkdir -p /opt/wallabag/data/db
mkdir -p /opt/wallabag/images
And finally –
chown -R nobody:nogroup /opt/wallabag
Now, running docker compose up worked!