首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当在主机上编辑时,绑定挂载目录中的特定文件不会在Docker容器中更新?

当在主机上编辑时,绑定挂载目录中的特定文件不会在Docker容器中更新?
EN

Stack Overflow用户
提问于 2021-12-21 18:04:05
回答 1查看 535关注 0票数 2

我正在尝试使用Docker在本地开发一个项目,并防止在每次更新时重新构建我的映像,我添加了一个bind-mount,它将我的src目录映射到Docker中的WORDIR。然后,在本地机器上所做的所有更改都会反映在我的Docker container...EXCEPT中的一个文件中。由于某些原因,我的项目中只有一个文件,当我更改其内容时,即使与该文件相邻的其他文件确实检测到文件更改,该更改也不会反映在Docker容器中。这让我相信目录映射是正确的,但是文件本身还有其他问题吗?

docker-compose.yaml

代码语言:javascript
复制
graphql:
  build:
    context: .
    dockerfile: ./app/graphql/src/Dockerfile
    target: development
  volumes:
    - ./app/graphql/src:/workspace
    - /workspace/node_modules/

Dockerfile

代码语言:javascript
复制
# ------------> Base Image
FROM node:14 AS base

WORKDIR /workspace

COPY ./app/graphql/src .

# ------------> Development Image
FROM base AS development

CMD ["npm", "run", "dev"]

我还不知道如何显示目录结构,但我正在修改的文件位于:

代码语言:javascript
复制
/app/graphql/src/api/graphql

其中,a.ts检测到更改并反映在Docker容器中,但b.ts没有。我读到了Docker如何依赖于文件的inode来匹配绑定挂载特定的文件。我正在安装一个目录,但为了检查是否正常,我运行了以下命令:

代码语言:javascript
复制
ls -i

在主机和容器中确认节点匹配。

我有两台M1 Mac电脑,我确认这是两台机器之间的问题。

还有其他的想法来调试这个问题吗?我唯一的想法是,我达到了最大数量的文件,可以跟踪,但这就是为什么我删除了node_modules。任何帮助都会很有帮助的!

编辑:我创建了一个新文件c.ts并复制了b.ts的内容(在主机和容器之间没有变化的文件)...and c.ts正确地检测变化!有没有办法检查为什么某个文件没有广播更改?这太奇怪了。

EN

回答 1

Stack Overflow用户

发布于 2021-12-21 19:19:05

您应该从您的Dockerfile中删除COPY ./app/graphql/src .指令,因为这个文件夹将作为卷挂载到容器中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70439810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档