【问题标题】:installing Node modules on Docker: why are they disappearing?在 Docker 上安装 Node 模块:为什么它们会消失?
【发布时间】:2014-12-30 04:48:02
【问题描述】:

我正在尝试创建我的第一个节点 Docker 映像。这是为了一个hubot。这是Dockerfile的基础知识:

FROM ubuntu:14.04
VOLUME /opt
COPY package.json /opt/hubot/
RUN apt-get update && apt-get -y install build-essential nodejs python
RUN npm install -g npm
WORKDIR /opt/hubot/
RUN npm install --prefix /opt/hubot/
COPY app /opt/hubot/app

问题是构建步骤结束后 node_modules 不存在。我可以看到它在构建步骤中被放置在我预期的位置:

make[1]: Entering directory `/opt/hubot/node_modules/aws2js/node_modules/mime-magic'

所以,我知道 Docker 文件有点无状态,这就是为什么“apt update && install”是必要的。但是 something 被遗忘了,否则安装的 apt 位将不会在最后出现。我怎样才能持久化node_modules

【问题讨论】:

  • 尝试删除 VOLUME 声明并试一试。 docs.docker.com/userguide/dockervolumes
  • @user2105103 呃,做到了。我想我不明白 VOLUME 应该如何工作。您可以将其发布为答案吗?我会接受的。

标签: node.js npm docker dockerfile


【解决方案1】:

对 VOLUME 所做的更改不会持续存在。

Data Volumes

数据卷是一个或多个容器中特别指定的目录,它绕过联合文件系统,为持久或共享数据提供一些有用的功能:

数据卷可以在容器之间共享和重用

直接更改数据量

更新图像时不会包含对数据量的更改

卷一直存在,直到没有容器使用它们

【讨论】:

    猜你喜欢
    • 2015-09-11
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    相关资源
    最近更新 更多