I'm trying to create a docker image that is hosting a NodeJS project during develop. It simply executes the NodeJS application with nodemon so it restarts every time when I make changes.
I also use TypeScript to develop the application. TypeScript must have access to a installed @types module. However the mounted volume that should show the node_modules folder is empty. So TypeScript cannot find the modules and cannot compile. My IDE is also complaining (obviously)
Is there a way to make the node_modules visible for TypeScript?
This is my 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" ]
This is my 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"
                You should use a separate folder for your node_modules and then set that folder in NODE_PATH environment
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" ]
This way your code would be separate and the node_modules will there in image itself. Anytime you add a new module you will rebuild the image, else development can go fine withe mounted volume
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With