Docker容器可以';t装载文件夹

Docker容器可以';t装载文件夹,docker,volume,mount,Docker,Volume,Mount,我正在写一份申请书。使用NodeJS进行语言和docker-docker-compose进行部署 我有一个上传文件的端点。当我上传文件时,应用程序会将其保存在“files”文件夹中(files文件夹位于项目的根目录下)。当容器重新启动时,我不想丢失文件,所以我创建了一个名为“myfiles”的卷,并将其装入“/files”路径 但是当我检查myfiles卷路径时,我看不到api创建的任何文件。如果重新启动容器,上载的文件将消失。 这是我的docker-compose.yaml api文件 ver

我正在写一份申请书。使用NodeJS进行语言和docker-docker-compose进行部署

我有一个上传文件的端点。当我上传文件时,应用程序会将其保存在“files”文件夹中(files文件夹位于项目的根目录下)。当容器重新启动时,我不想丢失文件,所以我创建了一个名为“myfiles”的卷,并将其装入“/files”路径

但是当我检查myfiles卷路径时,我看不到api创建的任何文件。如果重新启动容器,上载的文件将消失。

这是我的docker-compose.yaml api文件

version: '3.1'

services:
  api:
    image: api-image
    restart: always
    volumes:
      - myfiles:/files
volumes:
  myfiles:
docker compose up-d
之后,我上传了一些文件,并通过调用

docker exec-it容器名称ls
文件节点_modules package.json
index.js package-lock.json src

docker exec-it容器名称ls文件
d5a3455a39d8185153308332ca050ad8.png

成功创建文件

我检查了容器是否正确安装
码头工人检查集装箱名称和结果:

"Mounts": [
        {
            "Type": "bind",
            "Source": "/var/lib/docker/volumes/myfiles/_data",
            "Destination": "/files",
            "Mode": "rw",
            "RW": true,
            "Propagation": "rslave"
        }
    ]

您正在创建卷,但未使用文件夹。尝试使用当前目录中的文件夹
myfiles

version: '3.1'

services:
  api:
    image: api-image
    restart: always
    volumes:
      - ./myfiles:/files

你能给出卷的绝对路径吗,比如
-/absolute/path/to/myfiles:/files
我给出了myfiles卷的绝对路径。“/var/lib/docker/volumes/bpmfiles/_data”相同的结果。如何停止和重新启动容器?文档建议应该保留YAML文件中声明的命名卷。这是docker检查容器结果
“Mounts”:[{“Type”:“bind”,“Source”:“/root/bpm project/myfiles”,“Destination”:“/files”,“Mode”:“rw”,“rw”:true,“Propagation”:“rprivate”}]
它们不一样。现在您使用的是本地文件夹myfiles(/root/bpm project/myfiles),而不是docker卷myfiles(/var/lib/docker/volumes/myfiles/_data)。将文件上载到/files而不是容器中的文件-使用容器中的绝对路径。谢谢。我更新了我的NodeJS代码以使用绝对路径,它成功了。这里是我做的//server.js
app.use('/files',express.static('/files'))
//files.js
const storage=multer.diskStorage({目的地:函数(req,file,cb){cb(null,/files')})