How to store only templates data on docker volume?
-
Hi guys.
While we'll be investigating an issue from https://forum.jsreport.net/topic/1517/unhandled-rejection-nosuchkey-exception topic I decided to switch to the local file system as storage for templates, instead of AWS S3.docker-compose file content:
--- version: '3.7' services: jsreport: build: . image: jsreport container_name: jsreport restart: always ports: - "5488:5488" volumes: - jsreport:/jsreport/data environment: - extensions_authentication_admin_username=user - extensions_authentication_admin_password=test tty: true stdin_open: true volumes: jsreport:
But I receive an
jsreport | Error: EACCES: permission denied, open '/app/data/fs.lock'
error in the log output and JSRport server is not starting:jsreport | ln: /app/license-key.txt: File exists jsreport | chown: /jsreport/data: Operation not permitted jsreport | chown: /jsreport/data: Operation not permitted jsreport | 2020-04-17T11:16:39.088Z - info: Initializing jsreport@2.7.2 in production mode using configuration file: jsreport.config.json jsreport | 2020-04-17T11:16:39.093Z - info: Searching for available extensions in /app/ jsreport | 2020-04-17T11:16:39.104Z - info: Extensions location cache not found, crawling directories jsreport | 2020-04-17T11:16:39.346Z - info: Found 35 extensions jsreport | 2020-04-17T11:16:39.542Z - info: Setting http-server strategy for rendering jsreport | 2020-04-17T11:16:39.710Z - info: Using extension authentication@2.4.2 jsreport | 2020-04-17T11:16:39.737Z - info: Using extension cli@2.2.2 jsreport | 2020-04-17T11:16:39.739Z - info: Using extension debug@2.1.3 jsreport | 2020-04-17T11:16:39.741Z - info: Using extension express@2.6.0 jsreport | 2020-04-17T11:16:39.834Z - info: Using extension freeze@2.0.0 jsreport | 2020-04-17T11:16:39.837Z - info: Using extension handlebars@2.1.0 jsreport | 2020-04-17T11:16:39.840Z - info: Using extension import-export@1.5.1 jsreport | 2020-04-17T11:16:39.875Z - info: Using extension jsrender@2.1.1 jsreport | 2020-04-17T11:16:39.876Z - info: Using extension tags@2.3.0 jsreport | 2020-04-17T11:16:39.878Z - info: Using extension templates@2.3.2 jsreport | 2020-04-17T11:16:39.880Z - info: Using extension authorization@2.2.6 jsreport | 2020-04-17T11:16:39.885Z - info: Using extension base@2.0.2 jsreport | 2020-04-17T11:16:39.886Z - info: Using extension browser-client@2.2.2 jsreport | 2020-04-17T11:16:39.894Z - info: Using extension child-templates@1.3.1 jsreport | 2020-04-17T11:16:39.899Z - info: Using extension chrome-pdf@1.7.1 jsreport | 2020-04-17T11:16:39.945Z - info: Using extension data@2.2.0 jsreport | 2020-04-17T11:16:39.947Z - info: Using extension docx@2.5.0 jsreport | 2020-04-17T11:16:39.953Z - info: Using extension fs-store@2.7.2 jsreport | 2020-04-17T11:16:40.076Z - info: Using extension licensing@2.2.1 jsreport | 2020-04-17T11:16:40.079Z - info: Using extension pdf-utils@1.6.1 jsreport | 2020-04-17T11:16:40.197Z - info: Using extension pptx@0.5.0 jsreport | 2020-04-17T11:16:40.201Z - info: Using extension reports@2.2.1 jsreport | 2020-04-17T11:16:40.206Z - info: Using extension static-pdf@0.3.1 jsreport | 2020-04-17T11:16:40.208Z - info: Using extension studio@2.7.0 jsreport | 2020-04-17T11:16:40.285Z - info: Using extension text@2.0.0 jsreport | 2020-04-17T11:16:40.290Z - info: Using extension version-control@1.3.2 jsreport | 2020-04-17T11:16:40.360Z - info: Using extension assets@1.5.2 jsreport | 2020-04-17T11:16:40.368Z - info: Using extension html-to-xlsx@2.6.0 jsreport | 2020-04-17T11:16:40.562Z - info: html-to-xlsx detected chrome as available html engine jsreport | 2020-04-17T11:16:40.564Z - info: Using extension scripts@2.3.0 jsreport | 2020-04-17T11:16:40.572Z - info: Using extension studio-theme-dark@0.3.0 jsreport | 2020-04-17T11:16:40.574Z - info: Using extension xlsx@2.3.0 jsreport | 2020-04-17T11:16:40.710Z - info: Using extension public-templates@2.1.0 jsreport | 2020-04-17T11:16:40.711Z - info: Using extension resources@2.0.3 jsreport | 2020-04-17T11:16:40.720Z - info: Using extension sample-template@2.5.1 jsreport | 2020-04-17T11:16:40.722Z - info: Using general timeout for rendering (reportTimeout: 40000) jsreport | 2020-04-17T11:16:40.722Z - info: Using fs provider for template store. jsreport | 2020-04-17T11:16:40.727Z - info: fs store is persisting using fs jsreport | 2020-04-17T11:16:40.729Z - info: fs store sync is disabled jsreport | 2020-04-17T11:16:40.731Z - info: fs store underlying changes synchronization with studio is disabled jsreport | 2020-04-17T11:16:51.182Z - error: Error occured during reporter init Error: EACCES: permission denied, open '/app/data/fs.lock' jsreport | Error: EACCES: permission denied, open '/app/data/fs.lock'
Dockerfile
is very simple:FROM jsreport/jsreport:2.7.2 COPY --chown=jsreport:jsreport configs/* /app/
config.jsreport.json
looks like this:{ "extensions": { "scheduling": { "enabled": false }, "scripts": { "timeout": 40000, "strategy": "http-server" } }, "httpPort": 5488, "store": { "provider": "fs" }, "allowLocalFilesAccess": true, "templatingEngines": { "strategy": "http-server" }, "reportTimeout": 40000 }
If I change the volume config to
jsreport:/jsreport
, JSReport is running.
But I don't want to store alljsreport
directory on the volume as it also contains config files which I'm changing quite often. So my idea is to store only/jsreport/data
directory.Thank you!
-
Hm. Exactly the same docker-compose, dockerfile, jsreport.config.json works for me.
It looks like some kind of permission problem.
-
You're right.
docker system prune --all
and build from scratch did the trick.
Thanks!
-
I'm having this very same problem and it seems to me that it is right right that this is what should be happening. After all the jsreport:jsreport has no permissions on that volume.