我已经创建了一个带有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
这是我在主机中的文件夹结构:
该服务在没有音量的情况下工作。当我添加该卷时,/ 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。
配置是否有问题?应该如何运作?
答案 0 :(得分:0)
将卷添加到服务中将删除所有文件/usr/src/app
,并从主机上装载./app
的内容。这也意味着在docker映像中运行yarn
生成的所有文件都将丢失,因为它们仅存在于docker映像中。这是在docker中添加卷的预期行为,不是错误。
volumes:
- ./app:/usr/src/app
yarn
命令(可以使用入口点)