当我运行docker-compose build
时,我发现package.json中的依赖项正在容器上安装,但不在我的机器上。所以之后当我运行docker-compose up
时,我得到的错误是找不到依赖关系,即:Error: Cannot find module 'express'
我的应用程序结构非常简单,如下所示:
|____frontend
| |____index.html
| |____index.js
| |____webpack.config.js
| |____yarn.lock
| |____package.json
| |____dev.Dockerfile
|____backend
| |____server.js
| |____yarn.lock
| |____package.json
| |____dev.Dockerfile
|____docker-compose.yml
我的docker-compose.yml:
version: "3.3"
services:
frontend:
build:
context: .
dockerfile: frontend/dev.Dockerfile
volumes:
- ./frontend:/frontend:cached
command: yarn start
backend:
build:
context: .
dockerfile: backend/dev.Dockerfile
volumes:
- ./backend:/backend:cached
command: yarn start
这是前端的Dockerfile(后端看起来一样):
FROM node:latest
WORKDIR "/frontend/"
COPY frontend/package.json frontend/package.json
COPY frontend/yarn.lock frontend/yarn.lock
RUN yarn
这个配置有什么问题?我错过了什么?
答案 0 :(得分:1)
我遇到了类似的问题并通过在我的docker-compose文件中的node_modules目录中添加一个匿名卷来解决它。所以docker-compose文件中的卷看起来像这样:
volumes:
- './frontend:/frontend:cached'
- '/frontend/node_modules'
我从this博文
中得到了这个想法