如何使用dockerfile将文件从主机复制到新的docker映像,这些文件在容器上作为卷共享



如何在创建时使用dockerfile将文件从主机复制到映像,并在创建容器时使这些文件对主机可用?我在1(Dockerfile中的VOLUME=[..]之间迷路了2(run命令中的--VOLUME3(docker VOLUME create

我尝试创建一个dockerfile来将文件复制到图像中。但是如果我用-v选项运行容器,容器上的目标似乎被清除了??示例:

FROM node:latest
WORKDIR /usr/src/myapp
COPY package*.json ./
RUN npm install
COPY index.js /usr/src/myapp/index.js
EXPOSE 8080
CMD [ "node", "/usr/src/myapp/index.js" ]

在没有音量的情况下运行它效果很好

docker run -p 8080:8080 --name Test test:latest

然而,对于卷,容器上的目标目录似乎已被清除(错误:找不到模块"/usr/src/myapp/index.js"(

docker run -p 8080:8080 -v /mynasvolume1/test:/usr/src/myapp --name Test test:latest

我知道我的替代方案是在主机上创建一个命名卷,并将其作为volume包含在Dockerfile中。但这不是我的偏好,因为它不允许我在主机上选择卷位置(Synology NAS没有为我提供将默认位置从/volume1/@docker/volumes更改为我可以共享或装载的位置的解决方案(

是的,它似乎已清除,因为将/mynasvolume1/test安装到/usr/src/myapp将只显示来自/mynasvolume1/test的文件,并覆盖COPYDockerfile中创建的文件。目前尚不清楚您想要实现什么,但请尝试安装到特定目录,如:/mynasvolume1/test:/usr/src/myapp/test

最新更新