Docker卷清除Windows 10上容器中的文件夹

时间:2020-04-04 05:52:53

标签: docker docker-compose docker-volume

我已经创建了一个带有nodejs服务器的简单docker。

FROM node:12.16.1-alpine
WORKDIR /usr/src

COPY ./app/package.json .
RUN yarn

COPY ./app ./app

这很好用,服务正在运行。

现在我正在尝试使用docker compose运行带有本地开发卷的docker:

version: "3.4"
services:
    web:
        image: my-node-app
        volumes:
            - ./app:/usr/src/app
        ports:
            - "8080:8080"
        command: ["yarn", "start"]        
        build:
            context: .
            dockerfile: ./app/Dockerfile

这是我在主机中的文件夹结构:

enter image description here

该服务在没有音量的情况下工作。当我添加该卷时,/ usr / src / app为空(即使如文件夹结构所示它已满)。

检查docker容器,我得到以下安装配置:

"Mounts": [
        {
            "Type": "bind",
            "Source": "/d/development/dockerNCo/app",
            "Destination": "/usr/src/app",
            "Mode": "rw",
            "RW": true,
            "Propagation": "rprivate"
        }
    ],

但是,仍然可以通过vscode的外壳浏览到该文件夹​​,将其显示为空。

此外,命令:docker volume ls显示一个空列表。

我正在Windows 10上运行docker 18.09.3。

配置是否有问题?应该如何运作?

1 个答案:

答案 0 :(得分:0)

将卷添加到服务中将删除所有文件/usr/src/app,并从主机上装载./app的内容。这也意味着在docker映像中运行yarn生成的所有文件都将丢失,因为它们仅存在于docker映像中。这是在docker中添加卷的预期行为,不是错误。

        volumes:
            - ./app:/usr/src/app
  • 通常,没有开发环境,这里根本不需要卷。
  • 如果您想查看主机上的文件,则需要从docker-compose运行yarn命令(可以使用入口点)