Mat*_*ndt 5 node.js docker dockerfile nestjs nestjs-config
我正在开发一个 NestJS 项目,复制我的资源在我的 Mac 上工作得很好。但是,一旦我将其docker化,它就无法工作。
嵌套-cli.json
{
"collection": "@nestjs/schematics",
"sourceRoot": "src",
"compilerOptions": {
"assets": [
"**/*.hbs",
"**/*.css",
"**/*.jpg",
"**/*.png",
"**/*.jpeg"
],
"watchAssets": true
}
}
Run Code Online (Sandbox Code Playgroud)
Dockerfile:
FROM mhart/alpine-node:latest
RUN npm install pm2 -g
COPY backend /var/www/backend
COPY process.json /var/www
WORKDIR /var/www
#RUN npm i -g @nestjs/cli (tried with and w/out -> no difference)
RUN cd ./backend && npm i --legacy-peer-deps && npm run build
# Expose ports
EXPOSE 80
CMD ["pm2-runtime", "./backend/main"]
Run Code Online (Sandbox Code Playgroud)
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"target": "es2017",
"sourceMap": true,
"outDir": "./dist",
"baseUrl": "./",
"incremental": true
}
}
Run Code Online (Sandbox Code Playgroud)
tsconfig.build.json
npm{
"extends": "./tsconfig.json",
"exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
}
Run Code Online (Sandbox Code Playgroud)
我没有收到任何构建错误,并且我已在我的 Mac 上手动重现了这些步骤,并且所有内容都被复制。当我进入 docker 映像并手动运行 buld 步骤时,它可以正常工作,没有错误,但同样,没有复制任何资产。
我的资产位于不同的模块和服务文件夹中,并且希望保持这种方式 - 所以我不是在寻找简单的构建后复制目录解决方案:)
我尝试过不同的Linux发行版。和节点版本 - 我不知道还要检查什么
小智 1
我在尝试在 Linux 主机上对我的项目进行 dockerize 时遇到了类似的问题(yarn build在本地工作得很好,但资产没有复制到 docker 映像中)。
原始设置
Dockerfile:
FROM node:16-bullseye AS builder
WORKDIR /usr/app
COPY package.json ./
COPY yarn.lock ./
COPY src ./
COPY nest-cli.json ./
COPY tsconfig.build.json ./
COPY tsconfig.json ./
RUN yarn install
RUN yarn build
...
Run Code Online (Sandbox Code Playgroud)
嵌套-cli.json:
{
...,
"compilerOptions": {
"assets: [ "modules/mails/templates/**/*.hbs" ],
...
}
}
Run Code Online (Sandbox Code Playgroud)
使固定
“compilerOptions.assets”中指定的路径始终相对于项目中的“src”文件夹。检查我的 docker 映像,我意识到“src”文件夹的内容被复制到 docker 内的 build 文件夹的根目录中。
当“src”的内容移动到根目录时,NestJS 能够成功构建项目,但由于在“src”文件夹中查找资产,因此不会复制任何文件。在我的 Dockerfile 中更改此内容解决了问题:
COPY src ./src # Instead of 'COPY src ./'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2827 次 |
| 最近记录: |