我正在尝试使用Docker在本地开发一个项目,并防止在每次更新时重新构建我的映像,我添加了一个bind-mount,它将我的src目录映射到Docker中的WORDIR。然后,在本地机器上所做的所有更改都会反映在我的Docker container...EXCEPT中的一个文件中。由于某些原因,我的项目中只有一个文件,当我更改其内容时,即使与该文件相邻的其他文件确实检测到文件更改,该更改也不会反映在Docker容器中。这让我相信目录映射是正确的,但是文件本身还有其他问题吗?
docker-compose.yaml
graphql:
build:
context: .
dockerfile: ./app/graphql/src/Dockerfile
target: development
volumes:
- ./app/graphql/src:/workspace
- /workspace/node_modules/Dockerfile
# ------------> Base Image
FROM node:14 AS base
WORKDIR /workspace
COPY ./app/graphql/src .
# ------------> Development Image
FROM base AS development
CMD ["npm", "run", "dev"]我还不知道如何显示目录结构,但我正在修改的文件位于:
/app/graphql/src/api/graphql其中,a.ts检测到更改并反映在Docker容器中,但b.ts没有。我读到了Docker如何依赖于文件的inode来匹配绑定挂载特定的文件。我正在安装一个目录,但为了检查是否正常,我运行了以下命令:
ls -i在主机和容器中确认节点匹配。
我有两台M1 Mac电脑,我确认这是两台机器之间的问题。
还有其他的想法来调试这个问题吗?我唯一的想法是,我达到了最大数量的文件,可以跟踪,但这就是为什么我删除了node_modules。任何帮助都会很有帮助的!
编辑:我创建了一个新文件c.ts并复制了b.ts的内容(在主机和容器之间没有变化的文件)...and c.ts正确地检测变化!有没有办法检查为什么某个文件没有广播更改?这太奇怪了。
发布于 2021-12-21 19:19:05
您应该从您的Dockerfile中删除COPY ./app/graphql/src .指令,因为这个文件夹将作为卷挂载到容器中。
https://stackoverflow.com/questions/70439810
复制相似问题