gpt4 book ai didi

node.js - NodeJS 与 Docker : ENOENT: no such file or directory, 打开 '/app/folder/example.key'

转载 作者:太空宇宙 更新时间:2023-11-04 00:14:20 25 4
gpt4 key购买 nike

我主要是想了解如何排除故障/了解在构建 NodeJS 应用程序时如何将文件打包到 docker 容器中。我有一个 NodeJS 项目,其目录结构如下:

enter image description here

docker文件内容如下:

FROM node:8.7-alpine as build
RUN npm install --global typescript webpack
ENV NODE_ENV=development NODE_PATH=/app
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
RUN tsc -p .
RUN webpack

FROM node:8.7-alpine
ENV NODE_ENV=production NODE_PATH=/app
RUN apk add --no-cache \
udev \
ttf-freefont \
chromium \
fontconfig pango-dev libxcursor libxdamage cups-libs dbus-libs libxrandr gconf-dev libxscrnsaver libc6-compat
WORKDIR /app
COPY package.json .
RUN npm install

COPY --from=build /app/build .
CMD ["node", "."]

index.ts 文件中,我有以下行:

key: fs.readFileSync(path.join(__dirname, './../ssl/example.key'))

我尝试将上面的行更改为

key: fs.readFileSync(path.join(__dirname, '../ssl/example.key'))

但没有成功。我还尝试将 ssl 目录移动到 src 文件夹内并使用下面的行仍然没有成功:

key: fs.readFileSync(path.join(__dirname, 'ssl/example.key'))

此行会导致以下错误:

Error: ENOENT: no such file or directory, open '/app/ssl/example.key'
at Object.fs.openSync (fs.js:653:18)
at Object.fs.readFileSync (fs.js:554:33)
at Object.<anonymous> (/app/index.js:15:13)
at Module._compile (module.js:624:30)
at Object.Module._extensions..js (module.js:635:10)
at Module.load (module.js:545:32)
at tryModuleLoad (module.js:508:12)
at Function.Module._load (module.js:500:3)
at Function.Module.runMain (module.js:665:10)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3

我想这是因为应用程序目录放入 Docker 容器时的打包方式所致。没有docker容器它工作正常。有人可以帮忙吗?谢谢。

最佳答案

此问题的原因是我在 docker 镜像构建期间没有复制 ssl 文件夹。为了确保在构建过程中复制此文件夹,我需要添加 COPY到我的 Dockerfile。所以,最终的 Dockerfile 如下所示:

FROM node:8.7-alpine as build
RUN npm install --global typescript webpack
ENV NODE_ENV=development NODE_PATH=/app
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
RUN tsc -p .
RUN webpack

FROM node:8.7-alpine
ENV NODE_ENV=production NODE_PATH=/app
RUN apk add --no-cache \
udev \
ttf-freefont \
chromium \
fontconfig pango-dev libxcursor libxdamage cups-libs dbus-libs libxrandr gconf-dev libxscrnsaver libc6-compat
WORKDIR /app
# This was the missing line:
COPY ssl /ssl
COPY package.json .
RUN npm install

COPY --from=build /app/build .
CMD ["node", "."]

关于node.js - NodeJS 与 Docker : ENOENT: no such file or directory, 打开 '/app/folder/example.key',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47880408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com