It turned out that, since the container is launched as root user when swap is on, fly mounts volumes for root too:
Mounting /dev/vdb at /mnt/volume w/ uid: 0, gid: 0 and chmod 0755
then entry-point script substitutes user for rails server command with rails user:
This will require dockerfile-rails to check for and parse the fly.toml file, which will be fly.io specific; that being said, I see no reason why this couldn't be done.
I followed Sqlite3 on fly volumes tutorial and proactively enabled swap for demo rails app.
It turned out that, since the container is launched as root user when swap is on, fly mounts volumes for root too:
Mounting /dev/vdb at /mnt/volume w/ uid: 0, gid: 0 and chmod 0755
then entry-point script substitutes user for
rails server
command withrails
user:https://github.com/rubys/dockerfile-rails/blob/69f7631407735aa558bf99be46e0c0c988435479/lib/generators/templates/docker-entrypoint.erb#L18
rendering mounted volumes un-accessible for
rails
user.