我正在尝试创建一个在开发期间托管NodeJS项目的docker镜像。它只是使用nodemon执行NodeJS应用程序,因此每次进行更改时它都会重新启动。
我还使用TypeScript开发应用程序。 TypeScript必须能够访问已安装的@types
模块。但是,应显示node_modules
文件夹的已装入卷是空的。所以TypeScript找不到模块而无法编译。我的IDE也抱怨(显然)
有没有办法让TypeScript显示node_modules
?
这是我的Dockerfile:
FROM node:alpine
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
COPY package.json .
RUN npm install
# Bundle app source
COPY . .
# Run app
CMD [ "npm", "start" ]
这是我的docker-compose.yml:
version: "3"
services:
server:
build: .
environment:
- NODE_ENV=development
command: npm run debug
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
ports:
- "8080:8080"
- "9229:9229"
答案 0 :(得分:0)
您应为node_modules
使用单独的文件夹,然后在NODE_PATH
环境中设置该文件夹
FROM node:alpine
# Create app directory
ENV NODE_PATH /usr/node_modules
WORKDIR /usr/node_modules
# Install app dependencies
COPY package.json .
RUN npm install
WORKDIR /usr/src/app
# Bundle app source
COPY . .
# Run app
CMD [ "npm", "start" ]
这样您的代码就会分开,node_modules
会出现在图片本身。无论何时添加新模块,您都将重建图像,否则使用已安装的卷可以进行开发