我的想法是使用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镜像可能会在构建期间更改主机的文件系统。但我无法做到。
答案 0 :(得分:0)
安装卷时,它会替换您在容器中将其安装到的目录中的所有内容。您/root/test
中的所有内容都将替换为您的主机./vol
目录。
此外,我不确定这是否可行,因为当这些线路发生时:
WORKDIR /root/test
RUN touch index.html
RUN mkdir -p /root/test
确保明确创建容器路径。