新的 package.json 包未显示在 Docker 容器中

fey*_*chu 4 node.js docker dockerfile package.json docker-compose

我将 Docker 与 Docker Compose 一起使用,这些是我的文件:

#DOCKERFILE

FROM mhart/alpine-node 

# Create app directory
RUN mkdir -p /home/app

# Bundle app soure
COPY . /home/app

# From now on we work in /home/app
WORKDIR /home/app

# Install yarn and node modules
RUN echo -e 'http://dl-cdn.alpinelinux.org/alpine/edge/main\nhttp://dl-
cdn.alpinelinux.org/alpine/edge/community\nhttp://dl-
cdn.alpinelinux.org/alpine/edge/testing' > /etc/apk/repositories \
&& apk add --no-cache yarn \
&& yarn

EXPOSE 8080
Run Code Online (Sandbox Code Playgroud)

这是 dev 的 docker-compose 文件:

app:
  build: .
  command: yarn start:dev
  environment:
    NODE_ENV: development
  ports:
    - '8080:8080'
  volumes:
    - .:/home/app
    - /home/app/node_modules
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是这个设置似乎只工作一次,因为无论我添加哪个新模块package.json,每当我运行docker-compose build它都不会安装新包。

我使用卷的原因是因为如果没有,nodemon 将无法工作.:/home/app,但是如果主机中未安装节点模块,那么它将失败,这就是我需要的原因/home/app/node_modules。我怀疑这可能是我的错误的原因,但我不知道如何规避它。

fey*_*chu 5

我通过将 src 代码移动到src目录中解决了这个问题。这意味着我的docker-compose.yml文件现在看起来像这样:

app:
  build: .
  command: yarn start:dev
  environment:
    NODE_ENV: development
  ports:
    - '8080:8080'
  volumes:
    - ./src:/home/app/src
Run Code Online (Sandbox Code Playgroud)

由于我没有使用 node_modules 安装整个目录,因此新的似乎已正确安装。