The extensions directory you mentioned is really something specific for that docker configuration, if you use composer then you can leave that out.
It really depends on how you plan to host this. If you plan to run multiple pods with kubernetes then you will do a bit more.
Formatter cache
The biggest hurdle right now with scalable hosting for Flarum is the Formatter cache from s9e. This library, that manages the wysiwyg logic and it's addons/extensions, writes a php file to disk that Flarum must have. It is stored in storage/formatter
. Unless you implement a custom solution, as I've done in our managed hosting, you will need to persist this directory to persistent storage.
Session cache
Sessions, in Flarum, are using Laravel's "file" mechanism. This means that logged in state is saved into the directory storage/sessions
. Unless you implement your own logic, this directory is crucial if users are being switched from one pod to another.
Other storage
Other storage directories might be helpful to have, but honestly I wouldn't use the logs directory. Implement a custom error handler that logs to stderr conforming to the best practices of k8s.