【问题标题】:How to relocate DDEV project that was moved to different directory?如何重新定位移动到不同目录的 DDEV 项目?
【发布时间】:2019-01-09 17:44:07
【问题描述】:

场景

  • DDEV 项目已从/home/old-path/project-name 移动到/home/new-path/project-name
  • 在新位置执行ddev start 显示以下错误

无法获取项目:stat /home/old-path/project-name: no such 文件或目录

问题

需要哪些步骤才能“重新定位”目录并使 DDEV 重新启动并运行?

【问题讨论】:

    标签: docker ddev


    【解决方案1】:

    ddev rm -a 停止所有正在运行或停止的项目,然后ddev start 在新目录中。我唯一能猜到的是该项目在旧目录中停止。 ddev 项目不需要重定位,除了运行或停止容器的完整路径外,不知道它们所在的目录。

    【讨论】:

    • 感谢您的快速回复。 ddev rm -a 也会导致工作项目被删除,对吗?是否对例如有任何影响?丢失数据?
    • ddev rm 不会丢失任何数据(除非您丢失了ddev rm --remove-data)。我说使用ddev rm -a,因为它可以确保每个项目都停止,它只是简单的简写。
    【解决方案2】:

    分析

    由于 DDEV 列出了正确的旧路径名,它也必须存储在某个地方。我已经分析了目录~/.ddev/project-name/,但在那里找不到任何指向旧路径名的指针。似乎这些信息存储在其他地方。

    Docker 容器

    执行docker ps -a | grep project-name 显示如下:

    1f4eb31fc94e        drud/ddev-webserver:v1.3.0        "/start.sh"              2 months ago        Exited (0) 2 months ago                                                                                                ddev-project-name-web
    052ecb7c3e1b        drud/phpmyadmin:v1.3.0            "/run.sh phpmyadmin"     2 months ago        Exited (0) 2 months ago                                                                                                ddev-project-name-dba
    b9d71147a54f        drud/ddev-dbserver:v1.3.0         "/docker-entrypoint.…"   2 months ago        Exited (0) 2 months ago                                                                                                ddev-project-name-db
    

    执行docker inspect ddev-project-name-web | grep '/home/old-path/project-name' 会显示更多信息:

    "/home/old-path/project-name/.ddev:/mnt/ddev_config:ro",
    "/home/old-path/project-name:/var/www/html:cached"
    "Source": "/home/old-path/project-name/.ddev",
    "Source": "/home/old-path/project-name",
    "com.ddev.approot": "/home/old-path/project-name",
    

    宾果!旧路径名存储在 Docker 容器中。而且由于我的(有价值的)源仅安装到此 Docker 容器,因此通过执行 docker rm ddev-project-name-web 删除此容器似乎是安全的。使用 ddev start 在新目录中再次启动 DDEV 现在可以再次工作...

    总结

    鉴于 DDEV 项目名为 project-name...

    docker rm ddev-project-name-web
    cd /home/new-path/project-name
    ddev start
    

    【讨论】:

      【解决方案3】:

      有一个名为 global_config.yaml 的文件位于您用户的主目录 .ddev 文件夹中 (在我的 Windows 机器上是C:\Users\username\.ddev)。

      在此文件中,您将找到project_info: 部分,其中列出了您的项目及其路径。如果您移动了项目文件,您可以在此处输入新路径。

      如果您将文件移动到另一个磁盘,您还必须转到 docker Settings>Resources>File Sharing 并确保在此处启用新磁盘并绑定挂载。

      【讨论】:

        【解决方案4】:

        一旦你使用过ddev rm,也可以使用ddev rm --unlist 不确定它是否是最近添加到CLI的

        【讨论】:

          【解决方案5】:

          我必须执行“ddev stop --unlist projectname”并执行“ddev start”。不能说我是否会丢失数据,因为它是一个 sqlite。

          【讨论】:

          • 这并不能真正回答问题。如果您有其他问题,可以点击 提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review
          • 这是我在这种行为背景下的问题的解决方案。而且我认为这也可以帮助其他人;)
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-10-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-12-05
          相关资源
          最近更新 更多