2017-08-17 45 views
0

我試圖在開發過程中創建一個託管NodeJS項目的Docker圖像。它只需使用nodemon執行NodeJS應用程序,以便每次進行更改時都會重新啓動。在使用docker和docker構成的打字稿中訪問節點模塊

我也使用TypeScript來開發應用程序。 TypeScript必須有權訪問已安裝的@types模塊。但是,應顯示node_modules文件夾的安裝量爲空。所以TypeScript找不到這些模塊,無法編譯。我的IDE也抱怨(顯然)

有沒有辦法讓node_modules可見的TypeScript?

這是我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" ] 

這是我的搬運工,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

你應該使用一個單獨的文件夾爲您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將在圖像本身。任何時候你添加一個新的模塊,你將重建圖像,否則開發可以很好地安裝卷