使用docker& amp;来访问打字稿中的节点模块码头组成

时间:2017-08-17 15:28:54

标签: node.js typescript docker docker-compose

我正在尝试创建一个在开发期间托管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"

1 个答案:

答案 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会出现在图片本身。无论何时添加新模块,您都将重建图像,否则使用已安装的卷可以进行开发