0
respostas

Container não inicializa sem o node_modules mesmo com o npm install no Dockerfile

Olá pessoal, tudo bem?

Estou com um problema, quando eu removo a node_modules da minha pasta, e executo o docker-compose up aparece um erro informando que o express não foi encontrado, isso porque o node_modules também não está lá, porém no meu dockerfile a instrução para o npm install está explicito, imagino que o mesmo não esteja sendo executado.

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeSegue a estrutura dos meus aquivos:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

O Dockerfile:

FROM node:latest
COPY . /var/www
WORKDIR /var/www
RUN npm install
ENTRYPOINT npm start
EXPOSE 3000

O docker-compose.yml:

version: '3'

networks:
  connection:
    driver: bridge

services:
  node:
    build: .
    ports:
    - "80:3000"
    - "443:443"
    volumes:
    - ./:/var/www
    links:
    - db
    networks:
    - connection

  db:
    image: mysql:8.0
    environment:
    - MYSQL_ROOT_PASSWORD=node
    - MYSQL_DATABASE=node
    volumes:
    - /var/lib/mysql  
    networks:
    - connection
    ports:
      - "8081:3306"

E por fim o package.json:

{
  "name": "node-exemplo",
  "version": "17.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node index.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.15.3"
  }
}

Nesse cenario acima, quando eu executasse o compose-up ele deveria executar o npm install contido no dockerfile e consequentemente baixar o express do package.json, porem isso não esta acontecendo e está sendo exibido o erro da primeira imagem, estou usando o docker na versão 20.10.12 e o docker-compose na versão 1.25.0

Poderiam me ajudar em relação a isso? Porque se eu rodar o npm install fora do docker e deixar a node_modules no momento de executar o docker-compose up, tudo funciona corretamente, mas creio que deveria funcionar sem a node_modules visto que o dockerfile executa o npm install.