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.
Segue a estrutura dos meus aquivos:
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.