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
db
to already exist.- It tries to create the SQLite file as the user
nobody
and fails unless that user has write-access to thedb
directory.
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!