【发布时间】:2022-01-27 02:54:26
【问题描述】:
我有这个非常简单的 Dockerfile:
FROM node:current-alpine3.14 AS baseImage
WORKDIR /app
COPY package* .
RUN npm install
COPY . .
CMD ["npm", "run", "watch"]
然后我运行:
docker build . -t myImage
然后docker run -p 8080:3000 -v /c/myFolder:/app myImage
所以基本上我希望在容器中的 app 文件夹和我主机上的 C:\myFolder 之间“共享”。
但它不起作用: 例如,如果我更新 C:\myFolder\index.js,则容器中不会发生更改。
这是 docker inspect myContainer 在 Mounts 部分下返回的内容。
是否与转义/路径格式有关?还是我在处理 volume 时缺少一些基本的东西?还是 WORKDIR ?
坐骑: Mounts 似乎认为 "Program Files/Git/app" 是目标/容器文件夹,但它应该只是 "/app"
【问题讨论】:
-
在 Windows 中一切皆有可能:(。您的 docker run 语句似乎很好。至少容器启动并且应用程序正在运行?只是尝试,进入容器(docker exec ...)和在 index.js 中执行一些更改,如果您的应用检测到,请与我们分享
-
谢谢@JRichardsz。是的,容器启动并且工作正常。我使用的是 Alpine 映像,因此没有可用的 bash ... Mounts 似乎认为“Program Files/Git/app”是目标/容器文件夹,但它应该只是“/app”
-
你是对的@rzlvmp。这是一个错字。我已经编辑过了
-
在 alpine 中,您可以使用 sh 代替 bash。然后在里面,用
apk add nano安装nano。这样,编辑 index.js 并在检测到更改时与我们分享 -
Docker 的设计目标是镜像包含应用程序的不可变副本,并且它与主机上可能存在或不存在的应用程序的任何副本是分开的。您可以在没有 Docker 的情况下使用 Node 进行日常开发吗?
标签: windows docker git-bash docker-volume