node.js - 新的 package.json 包没有显示在 Docker 容器中

标签 node.js docker docker-compose dockerfile package.json

我正在使用 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

这是 dev 的 docker-compose 文件:

app:
  build: .
  command: yarn start:dev
  environment:
    NODE_ENV: development
  ports:
    - '8080:8080'
  volumes:
    - .:/home/app
    - /home/app/node_modules

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

我使用卷的原因是没有 .:/home/app nodemon 将无法工作,但是如果主机中没有安装 Node 模块,那么它将失败,原因我需要 /home/app/node_modules。我怀疑这可能是我出错的原因,但我不确定如何避免这种情况。

最佳答案

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

app:
  build: .
  command: yarn start:dev
  environment:
    NODE_ENV: development
  ports:
    - '8080:8080'
  volumes:
    - ./src:/home/app/src

因为我没有用 node_modules 安装整个目录,新的似乎安装正确。

关于node.js - 新的 package.json 包没有显示在 Docker 容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45119611/

相关文章:

docker - 从 docker 容器连接到主机 Elasticsearch 运行实例

docker - Kubernetes NodePort 连接被拒绝

docker - 使用 docker compose 为不同的 IP 地址缩放容器

django - 如何使用来自 Postgres 的数据正确填充 Docker Django 图像?

mysql - 如何使用 node.js(使用 node-mysql 驱动程序)连接到 MySQL?

javascript - Bluebird Javascript promise : stop execution after dealing with specified error

docker - 为什么将用户添加到docker用户组可以让docker以非root身份运行?

docker - 如何将 Selenium 测试脚本结果保存到本地主机

javascript - NodeJS HTTP response.redirect 不存在?

javascript - 递归异步函数返回未定义