首页 > 解决方案 > docker 内的 webpack-dev-server 麻烦

问题描述

我有这样的文件结构:

/root-app
  /api
  /dashboard
    package.json
    yarn.lock
    Dockerfile
docker-compose.yml

/root-app/ docker-compose.yml

dashboard:
  build: ./dashboard
  command: yarn dev
  volumes:
    - ./dashboard:/usr/src/app
    - /usr/src/app/node_modules

/root-app/dashboard/Dockerfile

FROM node
WORKDIR /usr/src/app
ADD package.json yarn.lock ./
RUN yarn install
COPY . .

当我在其中运行docker-compose up --build文件夹node_modules时,/roor-app/dashboard它已创建但它是空的。为什么?我应该有我node_modules的地方发展。

更新 1

当我使用绝对路径而不是相对路径时

dashboard:
  build: ./dashboard
  command: yarn dev
  volumes:
    - ./dashboard:/usr/src/app
    - ./dashboard/node_modules:/usr/src/app/node_modules

我收到此错误:

dashboard | yarn run v1.3.2
dashboard | $ webpack-dev-server --mode development
dashboard | /bin/sh: 1: webpack-dev-server: not found
dashboard | error Command failed with exit code 127.

更新 2

我的新/dashboard/Dockerfile

FROM node
WORKDIR /usr/src/app
COPY package.json ./
COPY yarn.lock ./
RUN yarn install

- ./hms-dashboard/node_modules:/usr/src/app/node_modules并从中删除docker-compose.yml,update-1 中的错误仍然存​​在。

标签: dockerdocker-compose

解决方案


您可以尝试在当前遇到退出代码 0 问题的构建上安装,但 node_modules 将安装。我遇到了一个问题,devDependencies即没有使用纱线安装的地方。

FROM node
ARG environment=development

RUN mkdir /client

WORKDIR /client
COPY . /client

EXPOSE 8080

RUN npm --version
RUN npm install yarn
CMD if ["$environment" = "development"]; then yarn install --production=false; else yarn install; fi
RUN echo $environment
CMD if [ "$environment" = "development" ] ; then yarn build && yarn start; else yarn build; fi

推荐阅读