Installing: what files/folders does the installation/runtime change?

Technical Support
  • I'm installing NodeBB inside Docker, and the files/folders that are changed during installation/runtime need to go into Docker volumes, in order to be persisted.

    For this I would need to know what those files/folders are.

    I found some, but there may be more:

    • /config.json
    • /build/cache-buster
    • /build/public


  • package.json if new plugins are installed, node_modules/

    Also public/uploads.

  • @julian Is there like an official list of files/folders that need to be persisted after docker installation so as to not lose data during an upgrade, and have the upgrade work properly? It feels like a shot in the dark, as there seems to be no official docker (or docker-compose) installation guide, only bare.

  • Nope, pretty much the same files. Every time you upgrade NodeBB or install/activate new plugins, you should rebuild anyway, so everything in build/ shouldn't be persisted either.

  • Persisted the specified files/folders after installation:


    Did not persist build as indicated.

    Container came back with following errors after a docker-compose down && docker-compose up -d:

    Missing translation "language:dir",
    Missing translation "pages:home",
    2019-09-11T00:25:29.679Z [4567/23] - error: /categories,
    Failed to lookup view "categories" in views directory "/usr/src/app/build/public/templates" {"view":{"defaultEngine":"tpl","ext":".tpl","name":"categories","root":"/usr/src/app/build/public/templates"},"stack":"Error: Failed to lookup view \"categories\" in views directory \"/usr/src/app/build/public/templates\"\n    at Function.render (/usr/src/app/node_modules/express/lib/application.js:580:17)\n    at ServerResponse.render (/usr/src/app/node_modules/express/lib/response.js:1012:7)\n    at content (/usr/src/app/src/middleware/render.js:93:15)\n    at eachfn (/usr/src/app/node_modules/async/dist/async.js:2952:28)\n    at replenish (/usr/src/app/node_modules/async/dist/async.js:444:21)\n    at /usr/src/app/node_modules/async/dist/async.js:449:13\n    at eachOfLimit$1 (/usr/src/app/node_modules/async/dist/async.js:475:34)\n    at awaitable(eachOfLimit$1) (/usr/src/app/node_modules/async/dist/async.js:208:32)\n    at eachOfGeneric (/usr/src/app/node_modules/async/dist/async.js:510:16)\n    at eachOf (/usr/src/app/node_modules/async/dist/async.js:555:16)"},
    Missing translation "language:dir",
    Error: Failed to lookup view "500" in views directory "/usr/src/app/build/public/templates",
  • I see that I had to execute ./nodebb build in the container. I am guessing that it is because after removing the container, the build directory was gone and needed to be rebuilt, which tells me I have to put a build command on every container startup. This is not very optimal. I am hoping at some point in the future we can have a more hands-off docker-friendly deployment (like with env vars and all).

Suggested Topics