代码之家  ›  专栏  ›  技术社区  ›  Marek Urbanowicz user7125929

Docker卷中的文件在文件更改时未在Windows上重新网格化

  •  1
  • Marek Urbanowicz user7125929  · 技术社区  · 6 年前

    我有Docker for Windows,切换到Docker toolbox,现在又回到Docker for Windows,我遇到了卷的问题。

    以前,卷运行得很好,我的容器运行时带有nodemon/tsnode/CLI监视文件,这些容器在源代码更改时可以正常重新启动,但现在它们根本没有,所以看起来容器中没有填充来自主机的文件更改。

    这是docker compose for one service:

    api:
       build:
         context: ./api
         dockerfile: Dockerfile-dev
       volumes:
         - ./api:/srv
       working_dir: /srv
       links:
         - mongo
       depends_on:
         - mongo
       ports:
        - 3030:3030
       environment:
         MONGODB: mongodb://mongo:27017/api_test
       labels:
         - traefik.enable=true
         - traefik.frontend.rule=Host:api.mydomain.localhost
    

    这个id是Dockerfile dev

    FROM node:10-alpine
    ENV NODE_ENV development
    WORKDIR /srv
    EXPOSE 3030
    CMD yarn dev // simply nodemon, working when ran from host
    

    有人能帮忙吗? C驱动器与共享并验证 docker run --rm -v c:/Users:/data alpine ls /data 正确显示文件列表。

    我真的很感激任何帮助。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Lukas Gentele    6 年前

    在Windows平台上使用Docker开发nodejs/typescript应用程序时,我们的团队也遇到了同样的问题,这一直是一个很大的难题。不过,老实说,Windows没有将更改事件传播到容器中是正确的(Linux主机也不会将fsnotify事件传播到容器中,除非更改是从容器中进行的)。所以底线是:我认为这个问题是无法避免的,除非你真的改变了容器中的文件,而不是在docker主机上改变它们。您可以使用docker sync等代码同步工具来实现这一点,有关可用选项的列表,请参阅本页: https://github.com/EugenMayer/docker-sync/wiki/Alternatives-to-docker-sync

    由于我们长期以来一直在努力解决这些问题,我和一位同事启动了一个名为DevSpace CLI的开源项目: https://github.com/covexo/devspace

    DevSpace CLI可以在本地文件夹和dev容器中的文件夹之间建立可靠、超快速的双向代码同步(适用于任何Kubernetes群集、任何卷,甚至适用于临时/非永久性文件夹),它的设计可以完美地与热重新加载工具(如nodemon)配合使用。在公共云上安装minikube或带有一键安装程序的集群,运行 devspace up 在你的项目中,你将准备好在你的DevSpace中编程,而不必担心本地Docker问题和热重新加载问题。让我知道它是否对你有效,或者你是否缺少什么。

        2
  •  0
  •   The Godfather    5 年前

    最近(2020年2月,Docker Desktop 2.2版)我陷入了这个困境,基本解决方案没有任何帮助。

    然而当我尝试 WSL 2 跑了我的车 docker-compose 从Ubuntu外壳内部开始,它可以立即获取文件中的更改。所以,如果有人看到了这一点,试着从WSL2中找到Docker。