Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error: EROFS: read-only file system, mkdir '/.pm2' #94

Open
vallamost opened this issue Jan 24, 2022 · 0 comments
Open

Error: EROFS: read-only file system, mkdir '/.pm2' #94

vallamost opened this issue Jan 24, 2022 · 0 comments

Comments

@vallamost
Copy link

vallamost commented Jan 24, 2022

If I try running pm2 in a docker container on Kubernetes using node:alpine or node:latest I am getting errors where a .pm2 folder is trying to be accessed during startup and can't be created.

What is the best practice for handling the .pm2 folder with Kubenetes? My App is failing to start with errors due to the .pm2 folder being unavailable.

I'm starting my app in the Dockerfile like this:

FROM keymetrics/pm2:16-alpine
ENV APP_DIR /dockerApp/myApp
WORKDIR $APP_DIR
...*copy app src files over*
ENV NPM_CONFIG_LOGLEVEL warn
RUN npm install --production
RUN npm install -g pm2
ENV PM2_HOME=/tmp/.pm2
RUN mkdir /tmp/.pm2

CMD ( pm2-runtime start pm2.json --watch )

Should I make a /tmp volume in the container and put the .pm2 folder there using the PM2_HOME environmental variable?

Bigger stack trace:

Error: EROFS: read-only file system, mkdir '/.pm2'
    at Object.mkdirSync (node:fs:1336:3)
    at mkdirpManualSync (/usr/local/lib/node_modules/pm2/node_modules/mkdirp/lib/mkdirp-manual.js:48:10)
    at mkdirpManualSync (/usr/local/lib/node_modules/pm2/node_modules/mkdirp/lib/mkdirp-manual.js:52:43)
    at mkdirpNativeSync (/usr/local/lib/node_modules/pm2/node_modules/mkdirp/lib/mkdirp-native.js:33:14)
    at Function.mkdirpSync [as sync] (/usr/local/lib/node_modules/pm2/node_modules/mkdirp/index.js:21:7)
    at module.exports.Client.initFileStructure (/usr/local/lib/node_modules/pm2/lib/Client.js:133:25)
    at new module.exports (/usr/local/lib/node_modules/pm2/lib/Client.js:38:8)
    at new API (/usr/local/lib/node_modules/pm2/lib/API.js:108:19)
    at Object.<anonymous> (/usr/local/lib/node_modules/pm2/index.js:11:18)
    at Module._compile (node:internal/modules/cjs/loader:1097:14)
Error: EROFS: read-only file system, mkdir '/.pm2'
    at Object.mkdirSync (node:fs:1336:3)
    at mkdirpManualSync (/usr/local/lib/node_modules/pm2/node_modules/mkdirp/lib/mkdirp-manual.js:48:10)
    at mkdirpManualSync (/usr/local/lib/node_modules/pm2/node_modules/mkdirp/lib/mkdirp-manual.js:52:43)
    at mkdirpNativeSync (/usr/local/lib/node_modules/pm2/node_modules/mkdirp/lib/mkdirp-native.js:33:14)
    at Function.mkdirpSync [as sync] (/usr/local/lib/node_modules/pm2/node_modules/mkdirp/index.js:21:7)
    at module.exports.Client.initFileStructure (/usr/local/lib/node_modules/pm2/lib/Client.js:141:25)
    at new module.exports (/usr/local/lib/node_modules/pm2/lib/Client.js:38:8)
    at new API (/usr/local/lib/node_modules/pm2/lib/API.js:108:19)
    at Object.<anonymous> (/usr/local/lib/node_modules/pm2/index.js:11:18)
    at Module._compile (node:internal/modules/cjs/loader:1097:14)

My pm2 json config

{
    "name": "myApp",
    "script": "app.js",
    "watch": ["./"],
    "watch_delay": 1000,
    "ignore_watch" : ["node_modules", ".git", ".pm2", ".cicd"],
    "watch_options": {
      "followSymlinks": false
    }
  }
  

I tried using the pm2 docker image (FROM keymetrics/pm2:latest-alpine) but I'm getting different errors with that:

2022-01-24T08:40:58: PM2 error: TypeError [ERR_INVALID_ARG_TYPE]: The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received type number (31)
    at Object.writeFileSync (fs.js:1380:5)
    at /usr/local/lib/node_modules/pm2/lib/God/ForkMode.js:268:12
    at wrapper (/usr/local/lib/node_modules/pm2/node_modules/async/internal/once.js:12:16)
    at next (/usr/local/lib/node_modules/pm2/node_modules/async/waterfall.js:96:20)
    at /usr/local/lib/node_modules/pm2/node_modules/async/internal/onlyOnce.js:12:16
    at WriteStream.<anonymous> (/usr/local/lib/node_modules/pm2/lib/Utility.js:186:13)
    at WriteStream.emit (events.js:315:20)
    at WriteStream.EventEmitter.emit (domain.js:485:12)
    at internal/fs/streams.js:395:12
    at FSReqCallback.oncomplete (fs.js:163:23)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant