Express Server可以在Docker容器中读取密钥

发布于 2025-01-28 17:24:15 字数 2399 浏览 5 评论 0原文

我正在扩展一个系统,该系统使用PEM和键与远程开发服务器进行身份验证。不幸的是,尽管文件位于Docker映像中,但似乎仍无法找到该文件。

错误

server_1   | Error: ENOENT: no such file or directory, open '/app/certificates/jwt.key'
server_1   |     at Object.openSync (fs.js:497:3)
server_1   |     at Object.readFileSync (fs.js:393:35)
server_1   |     at Object.<anonymous> (/app/controllers/user.js:7:16)
server_1   |     at Module._compile (internal/modules/cjs/loader.js:1085:14)
server_1   |     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
server_1   |     at Module.load (internal/modules/cjs/loader.js:950:32)
server_1   |     at Function.Module._load (internal/modules/cjs/loader.js:790:12)
server_1   |     at Module.require (internal/modules/cjs/loader.js:974:19)
server_1   |     at require (internal/modules/cjs/helpers.js:101:18)
server_1   |     at Object.<anonymous> (/app/routes/upload.js:8:24)
server_1   |     at Module._compile (internal/modules/cjs/loader.js:1085:14)
server_1   |     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
server_1   |     at Module.load (internal/modules/cjs/loader.js:950:32)
server_1   |     at Function.Module._load (internal/modules/cjs/loader.js:790:12)
server_1   |     at Module.require (internal/modules/cjs/loader.js:974:19)
server_1   |     at require (internal/modules/cjs/helpers.js:101:18) {
server_1   |   errno: -2,
server_1   |   syscall: 'open',
server_1   |   code: 'ENOENT',
server_1   |   path: '/app/certificates/jwt.key'
server_1   | }

行(Server/Controllers/user.js - &gt; App/Controllers/user.js)

const pem = fs.readFileSync(path.resolve(__dirname, "../certificates/jwt.key"));

Dockerfile

FROM node:14
RUN mkdir app
WORKDIR /app
COPY . .
RUN npm install
RUN npm run get_key
EXPOSE 5000
CMD [ "npm", "run", "start" ]

Package.json

  "scripts": {
    "test": "mocha -r dotenv/config ./**/*.test.js",
    "start": "node -r dotenv/config server.js",
    "dev": "nodemon -r dotenv/config server.js",
    "get_key": "ssh-keygen -t rsa -b 4096 -m PEM -f ./certificates/jwt.key -P ''"
  },

“在此处输入图像说明”

I am dockerizing a system that uses a pem and key to authenticate with a remote dev server. Unfortunately, it would appear that it is unable to find the file despite it being in the docker image.

Error

server_1   | Error: ENOENT: no such file or directory, open '/app/certificates/jwt.key'
server_1   |     at Object.openSync (fs.js:497:3)
server_1   |     at Object.readFileSync (fs.js:393:35)
server_1   |     at Object.<anonymous> (/app/controllers/user.js:7:16)
server_1   |     at Module._compile (internal/modules/cjs/loader.js:1085:14)
server_1   |     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
server_1   |     at Module.load (internal/modules/cjs/loader.js:950:32)
server_1   |     at Function.Module._load (internal/modules/cjs/loader.js:790:12)
server_1   |     at Module.require (internal/modules/cjs/loader.js:974:19)
server_1   |     at require (internal/modules/cjs/helpers.js:101:18)
server_1   |     at Object.<anonymous> (/app/routes/upload.js:8:24)
server_1   |     at Module._compile (internal/modules/cjs/loader.js:1085:14)
server_1   |     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
server_1   |     at Module.load (internal/modules/cjs/loader.js:950:32)
server_1   |     at Function.Module._load (internal/modules/cjs/loader.js:790:12)
server_1   |     at Module.require (internal/modules/cjs/loader.js:974:19)
server_1   |     at require (internal/modules/cjs/helpers.js:101:18) {
server_1   |   errno: -2,
server_1   |   syscall: 'open',
server_1   |   code: 'ENOENT',
server_1   |   path: '/app/certificates/jwt.key'
server_1   | }

Line (server/controllers/user.js -> app/controllers/user.js)

const pem = fs.readFileSync(path.resolve(__dirname, "../certificates/jwt.key"));

Dockerfile

FROM node:14
RUN mkdir app
WORKDIR /app
COPY . .
RUN npm install
RUN npm run get_key
EXPOSE 5000
CMD [ "npm", "run", "start" ]

package.json

  "scripts": {
    "test": "mocha -r dotenv/config ./**/*.test.js",
    "start": "node -r dotenv/config server.js",
    "dev": "nodemon -r dotenv/config server.js",
    "get_key": "ssh-keygen -t rsa -b 4096 -m PEM -f ./certificates/jwt.key -P ''"
  },

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

缱倦旧时光 2025-02-04 17:24:15

音量安装座覆盖了钥匙建筑物。需要先在撰写之前先在本地生成密钥。

  server:
    build: server
    ports: 
      - "5000:5000"
    restart: always
    depends_on:
      - mongodb
    volumes:
      - ./server:/app

The volume mount was overriding the key building. Need to generate the key locally first before composing.

  server:
    build: server
    ports: 
      - "5000:5000"
    restart: always
    depends_on:
      - mongodb
    volumes:
      - ./server:/app
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文