我主要是想了解如何在构建NodeJS应用程序时解决问题/了解文件如何打包到docker容器中。我有一个NodeJS项目,其目录结构如下:
docker文件内容如下:
FROM node:8.7-alpine as build
RUN npm install
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
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
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容器,它可以正常工作。有人能帮忙吗?谢谢