skip to Main Content

I am new to docker. I am trying to create a container for react and express and run both the containers on same network using docker compose.

Below is my dockerfile for frontend:

FROM node:alpine

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000

CMD ["npm","run","start"]

Below is my dockerfile for backend

FROM node:alpine

WORKDIR /app

COPY package*.json ./

RUN NODE_ENV=development npm install

COPY . .

EXPOSE 5000

CMD ["npm","run","server"]

Below is my docker-compose.yml

version: '3'
services:
  client:
    build: 
      context: './frontend'
      dockerfile: Dockerfile
    ports:
    - 3000:3000
    container_name: react_cont
    environment:
      - WATCHPACK_POLLING=true
    networks:
    - mern
    volumes:
    - ./frontend:/app
    depends_on:
    - server
  server:
    build:
      context: './backend'
      dockerfile: Dockerfile
    ports:
    - 5000:5000
    container_name: express_cont
    networks:
    - mern
    volumes:
    - ./backend:/app
networks:
  mern:

react container is getting is created and running successfully but the express container is not getting created with an error

sh: nodemon: not found

I had installed nodemon as my dev dependency.

Any help is appreciated. Thanks in advance.

3

Answers


  1. Chosen as BEST ANSWER

    Answering my own Question.

    I had installed nodemon globally in my machine but forgot to install it as a dependency for my current project.

    Since nodemon was installed globally in my machine i was not getting any errors while i was trying to run my server.js using nodemon. nodemon server.js in scripts did not throw any error while i was in developing my project locally prior moving it to docker container.

    But since neither my package.json had nodemon as my dependency and i had not installed it separately in my container nodemon did not get installed and it gave me error.


  2. You may need to install nodemon package globally in your Docker:

    RUN NODE_ENV=development npm install && npm --global install nodemon
    
    Login or Signup to reply.
  3. You can try to delete node_modules folder in your source code and add flag --production=false explicitly to the npm install command. I think it’s caching problem.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search