Node.js 为什么没有';t docker是否将文件复制到挂载目录?

Node.js 为什么没有';t docker是否将文件复制到挂载目录?,node.js,docker,dockerfile,Node.js,Docker,Dockerfile,我在Docker中安装有问题。我只想保存图片并返回到前端 这是一个dockerfile: 来自节点:b WORKDIR/app 复制 运行npm安装--生产 运行mkdir-p/app/public 卷[“/app/public”] CMD yum安装imagemagick #如果我们不使用这个特定的表单,SIGINT/SIGTERM不会被转发 CMD node server.js 我正在部署skyliner.io。 检查我得到的图像: [ { “Id”:“sha256:598085445F8

我在Docker中安装有问题。我只想保存图片并返回到前端

这是一个dockerfile:

来自节点:b
WORKDIR/app
复制
运行npm安装--生产
运行mkdir-p/app/public
卷[“/app/public”]
CMD yum安装imagemagick
#如果我们不使用这个特定的表单,SIGINT/SIGTERM不会被转发
CMD node server.js
我正在部署skyliner.io。 检查我得到的图像:

[
{
“Id”:“sha256:598085445F82A8324F41842A7AC4F93A55B09D93BFAF07E7CE7B8A4BC5918D9”,
“报告标签”:[
“thurst后端:最新版本”
],
“回购摘要”:[],
“父项”:“,
“评论”:“评论”,
“已创建”:“2017-01-09T16:05:50.958866532Z”,
“容器”:“85457fb45353305715ea72297187fd6b88a019aa369426428c536a6a80450206”,
“集装箱配置”:{
“主机名”:“45f28166fed1”,
“域名”:“,
“用户”:“,
“AttachStdin”:假,
“AttachStdout”:false,
“AttachStderr”:false,
“Tty”:假,
“OpenStdin”:false,
“StdinOnce”:错,
“环境”:[
“路径=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin”,
“NPM_CONFIG_LOGLEVEL=info”,
“节点_版本=6.9.4”
],
“Cmd”:[
“/bin/sh”,
“-c”,
“#(nop)CMD[\”/bin/sh\“\”-c\“\”node server.js\“]”
],
“ArgsEscaped”:正确,
“图像”:“sha256:64249ddf0e9111ef191b1fb02d1af3ae2c7735f0509169a8e5fa6bc980a463ba”,
“卷”:{
“/app/public”:{}
},
“工作目录”:“/app”,
“入口点”:空,
“OnBuild”:[],
“标签”:{}
},
“DockerVersion”:“1.11.2”,
“作者”:“作者”,
“配置”:{
“主机名”:“45f28166fed1”,
“域名”:“,
“用户”:“,
“AttachStdin”:假,
“AttachStdout”:false,
“AttachStderr”:false,
“Tty”:假,
“OpenStdin”:false,
“StdinOnce”:错,
“环境”:[
“路径=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin”,
“NPM_CONFIG_LOGLEVEL=info”,
“节点_版本=6.9.4”
],
“Cmd”:[
“/bin/sh”,
“-c”,
“node server.js”
],
“ArgsEscaped”:正确,
“图像”:“sha256:64249ddf0e9111ef191b1fb02d1af3ae2c7735f0509169a8e5fa6bc980a463ba”,
“卷”:{
“/app/public”:{}
},
“工作目录”:“/app”,
“入口点”:空,
“OnBuild”:[],
“标签”:{}
},
“架构”:“amd64”,
“操作系统”:“linux”,
“尺寸”:700375224,
“虚拟化”:700375224,
“GraphDriver”:{
“名称”:“覆盖”,
“数据”:{
“RootDir”:“/var/lib/docker/overlay/739C2F7EE799C2EC0E75BEB02C24C084AA9545FA6F1680B6A5062BF5D6133E8/root”
}
},
“RootFS”:{
“类型”:“层”,
“层”:[
“sha256:B6CA02DFE52C58DACB116EB42ED35761C15562485F9DA9364BB7C90B9B3”,
“sha256:60a0858edcd5aad240966e33389850e4328de4cfb5282977eddda56bffc7f95f”,
“sha256:53c779688d06353f7ba4fd7ce1d43ce146ad0278ebead0feea1846383c730024”,
“sha256:0A5E2B2DDEA749D95730BAD9BE3E3A472F6F80544DA0082A99BA569DF34FF3”,
“sha256:FA18E5FFD316BEB0C4C929EA1FF8D559A73A366F30F1004BB06AF3E9F800696”,
“sha256:604c78617f347c58e4ce0021f47928b7df3d799ea7c5e9367fa5a800e473dc06”,
“sha256:6a73c39a0ab65b5e2da69b9013fc7f50c8bf5be27c0cf5fb3b642a247a8993ca”,
“sha256:B7CE32B271BEE3C614232448A4308CDFC4A2BF6F8DB1436F51CB74AE5C15DC”,
“sha256:A276062D9F56B85BF34797301D74B761970C3E6CE0CCD325F4535E675A0974E”,
“sha256:2f616e13f894a3a5c4dc33cbbcce345c51a704d56a70396cacdfb2e96e2ff9df”,
“sha256:C6DFD7A877DBA2837CC46E906CDE9AA6E1CC5F89C9C65CEFA8130D59E2C7AC”
]
}
}
]
了解问题的下一个命令:

$docker卷ls
驱动程序卷名
本地2fe327f9a9d82d7ddad72e8d9dcda76e3212653e100c24453de9edbbf60fbe53
而且

$docker volume inspect 2fe327f9a9d82d7ddad72e8d9dcda76e3212653e100c24453de9edbbf60fbe53
[
{
“名称”:“2fe327f9a9d82d7ddad72e8d9dcda76e3212653e100c24453de9edbbf60fbe53”,
“驱动程序”:“本地”,
“装入点”:“/var/lib/docker/volumes/2fe327f9a9d82d7ddad72e8d9dcda76e3212653e100c24453de9edbbf60fbe53/_数据”,
“标签”:空
}
]
当我运行project not in container(不在容器中)时,所有工作正常,文件保存到
/public/images/:id/:id user.jpg


但当我在docker中运行project时,文件位于
/var/lib/docker/overlay/0A2BDFAE85072DCE01E470EB71F1199AB23D90EB6F9E573D6A65E06D387CCE/upper/app/public/images
不确定我是否理解正确,但可能是因为应用程序写入路径/public


你说,当你不在容器中运行时,你会得到
/public/images/…
,但你的卷是
/app/public
,这是另一个路径,因此你会写入你的容器卷。

如果我在“public”文件夹中创建一个文件夹,我看不到它?但所有文件夹和文件都保存在其他目录/var/lib/docker/overlay/0a2bdfae85072dce01e470eb71f1199ab23d90eb6f9e573d6a65e06d3d387cce/upper/app/public/imagesTry中,但运行“docker exec-it bash”从内部检查文件系统并验证文件确实存在于/app/public中…我找到了文件
docker exec-itfc701a4b6ccf bashroot@ip-10-17-166-10:/ap