无法在已安装的目录

时间:2018-02-07 13:52:40

标签: node.js docker npm semantic-ui docker-volume

我的想法是使用docker容器与应用程序分开构建js和css资产。我在主机上有代码,我试图将我的代码作为卷安装到docker容器。但是当我执行RUN npm install sematic-ui --save时,在Dockerfile中,它并没有改变我试图挂载的目录中的任何内容。

在构建过程中是否可以使用已安装的卷,还是应该在运行映像时安装npm软件包?

在我的案例中,最佳做法是什么?

编辑:

我简化了案例以展示一个例子。这是我的档案。

搬运工-compose.yml

version: '3'
services:
 web:
  build: .
  volumes:
    - ./vol:/root/test

Dockerfile

FROM debian:9
WORKDIR /root/test
RUN touch index.html
CMD /bin/sh

然后我做docker-compose build。 我希望在主机上的vol目录中看到index.html。为什么这不会发生?我注意到一些docker镜像可能会在构建期间更改主机的文件系统。但我无法做到。

1 个答案:

答案 0 :(得分:0)

安装卷时,它会替换您在容器中将其安装到的目录中的所有内容。您/root/test中的所有内容都将替换为您的主机./vol目录。

此外,我不确定这是否可行,因为当这些线路发生时:

WORKDIR /root/test
RUN touch index.html
/ root / test目录不存在。我不确定Docker放置index.html的位置。通常我会RUN mkdir -p /root/test确保明确创建容器路径。