正在使用的Dockerfile:
FROM node:8-alpine
WORKDIR /usr/src/app
COPY . .
RUN npm install
CMD ["npm", "run", "serve"]
EXPOSE 8080
还有docker-compose.yml文件:
version: '3'
services:
app:
container_name: app
restart: always
build:
context: ./app
dockerfile: Dockerfile
ports:
- "8080:8080"
volumes:
- ./app:/usr/src/app
- ./logs:/logs
文件夹结构如下:
project/
|-- docker-compose.yml
|-- logs/
|-- app/
|-- Dockerfile
|-- package.json
从project /运行docker-compose up --build
时,npm install
步骤在大约一分钟后输出以下内容:
added 1684 packages from 1297 contributors and audited 36429 packages in 56.23s
found 0 vulnerabilities
但是,在npm run serve
步骤中,输出基本上是说找不到npm模块,尤其是此行:
npm WARN本地package.json存在,但是缺少node_modules,您是要安装吗?
npm install
确实得到肯定执行,但是npm抱怨找不到node_modules
?
答案 0 :(得分:0)
更新:我最终仅使用./app/src
文件夹作为卷,而不是./app
。
这样,/app/node_modules
不会被主机的卷覆盖。
version: '3'
services:
app:
container_name: app
restart: always
build:
context: ./app
dockerfile: Dockerfile-dev
ports:
- "8080:8080"
volumes:
- ./app/src:/usr/src/app/src # <---- this
- ./logs:/logs
答案 1 :(得分:0)
我遇到了同样的问题,就在this instruction之后就解决了。在卷中的docker-compose.yml文件中添加一行代码- /usr/src/app/node_modules
:
volumes:
- ${PWD-.}/name_of_your_app:/usr/src/app
- /usr/src/app/node_modules