问题标签 [ddev]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
docker - 在 Windows 10 Home ddev 启动未启动 - 无法为服务 db 创建容器:“bind”类型的装载配置无效
今天我尝试在朋友的机器上设置 ddev:
OS Windows 10 Home Docker Toolbox - 全新安装 Docker Toolbox Quickstart -> 指出我们需要启用虚拟化
BIOS -> 虚拟化 -> isEnabled Docker Toolbox Quickstart 运行。
适用于 Windows 10 全新安装的 ddev 配置的 druds ddev 有效。
snowm@ThomasWin10HP MINGW64 /c/Data3/test $ ddev start 开始测试...正在创建 ddev-test-db ...错误
错误:ddev-test-db 无法为服务 db 创建容器:类型“bind”的挂载配置无效:绑定挂载源路径不存在:/c/Data3/test/.ddev
错误:for db 无法为服务 db 创建容器:类型“bind”的挂载配置无效:绑定挂载源路径不存在:/c/Data3/test/.ddev 在启动项目时遇到错误。创建 ddev-test-db ... 错误
错误:ddev-test-db 无法为服务 db 创建容器:类型“bind”的挂载配置无效:绑定挂载源路径不存在:/c/Data3/test/.ddev
错误:for db 无法为服务 db 创建容器:类型“bind”的挂载配置无效:绑定挂载源路径不存在:/c/Data3/test/.ddev 在启动项目时遇到错误。
但为了确保路径存在。:-(
我们阅读了这个(与 docker 共享驱动器),但它看起来 docker 工具箱项目没有这个 GUI: “bind”类型的安装配置无效:尝试在 Docker for Windows 上运行容器时,绑定源路径不存在
config.yaml 看起来像这样:
docker-compose.yaml 看起来像这样
解决方案:
我们删除了所有内容(~/.ddev ~/.docker 等),卸载了 docker 工具箱、ddev 和虚拟机,这一次完全按照“逐步”进行操作:
- 首先在 BIOS 设置中启用虚拟化
- 然后将 docker Toolbox 安装为 ADMIN 并让 Docker Toolbox 也安装带有 ndis 网络驱动程序的 virtualbox(最后一个复选框)
- 等待,同时什么也不做,以确保看到 ACL - 问题
- 以管理员身份启动 virtualbox(现在网络适配器已创建)
- RESTART Windows 一切都已正确启动
- 安装 ddev als 管理员,让他创建快捷方式并将自己添加到 windows 路径
- 启动 docker quickstart 终端,让 docker Toolbox 创建一个默认的虚拟容器
切换到用户主目录
cd ~ mkdir web cd web mkdir testdomain cd testdomain ddev start
感谢 fray,正如他的暗示,ddev 项目必须在用户主目录下是它不起作用的主要原因。
也许上面的一个或多个步骤并不重要,但由于它现在正在运行,我将保持原样:-)
ddev - 当 ddev 配置为使用 apache 时,为什么我会看到 nginx 标头?
我将 ddev 更新到 1.3.0 版并运行ddev config
. 之后,我将配置从 更改nginx-fpm
为apache-fpm
。启动 ddev 并检查 HTTP 标头后,使用了 nginx/1.15.3。为了让 Apache 正常工作,还有其他事情要做吗?
我的 config.yaml:
ddev - ddev v1.3.0 中的 ssh 客户端去哪儿了?
我在 ddev web 容器中使用 ssh,直到 ddev v1.3.0 之前它都很好。它去了哪里,我该如何取回它?
typo3 - ddev v1.3.0 有 MariaDB 10.2,它可能与 TYPO3 v8 不兼容
我在升级ddev v1.3.0时注意到它使用的是MariaDB 10.2,它与TYPO3 v8存在兼容性问题。
ddev - 如何在 ddev 上启用 Apache 模块?
我正在使用webserver-type: apache-fpm
ddev 并且需要启用一个模块。我怎么做?
windows-subsystem-for-linux - ddev 可以与 WSL(Linux 的 Windows 子系统)一起使用吗?
作为一个在 Windows 机器上工作但喜欢将 Ubuntu 作为工作环境的人,我想在WSL中使用 ddev 。有没有办法做到这一点?
phpunit - 如何使用 ddev 运行 TYPO3 功能测试?
我尝试在 ddev 中运行 TYPO3 扩展的功能测试。我遇到了这个问题,TYPO3 尝试为测试创建新数据库,但db
不允许默认名为 ddev db 的用户创建新数据库。
我该如何解决这个问题?
javascript - 是否可以将节点 localhost 暴露给我的主机?
我目前正在从事基于 Ionic 的项目。由于我不想在本地安装 node.js,我尝试了 DDEV,即使它应该是 PHP 开发环境。
但是,当通过我的应用程序ionic serve -l
的前端为我的应用程序提供服务时,它应该可以在http://localhost:8200
. 好吧,我猜我必须将此端口公开给我的主机。
为此,我已经尝试了一些配置,但没有成功。例如:
- 我将 nginx-site-conf 配置为侦听端口 8200。我知道这是一个弱尝试,但我必须尝试。
- 此外,我创建了一个
docker-compose.override.yaml
并添加了要向我的主机公开的端口 8200。效果不好。
有没有人有想法或者 DDEV 不是该工作的正确工具?
ddev - 从其他主机访问 ddev web 容器
我想从另一台主机访问 ddev Web 容器。我怎样才能做到这一点?
例如:ddev 在主机 A 上运行,我想从主机 B 访问网页。
php - XSym 符号链接不能在 PHP on Docker for Windows 中使用
在 Windows 上的 Docker 容器内使用 PHP 时(例如使用 DDEV),在容器内创建的符号链接(例如由 composer)似乎无法与 PHP 的文件流一起正常工作。
设想
想象一下下面的 PHP 代码
如果在容器内执行,它只输出demo-base-directory
,但是demo-symbolic-link
缺少(在 Docker 容器内的 Linux/Unix 系统上,同样的示例按预期工作)
在主机系统中查看符号链接时(例如cat demo-symbolic-link
在 Windows PowerShell 中使用),它显示
Docker for Windows 还有其他关于符号链接仿真的报告 - 我无法为使用fgets
或file_get_contents
但对于提到的glob
调用的文件重现此行为,请参阅
共享卷以 Samba/CIFS 挂载方式挂载在 Windows 主机系统上基于 Linux 的 Docker 容器中,如下所示:
//10.0.75.1/C on /var/www/html type cifs (rw,relatime,vers=3.02,sec=ntlmsspi,cache=strict,username=olly,domain=OLIVERHADERB9D8,uid=0,noforceuid,gid=0 ,noforcegid,addr=10.0.75.1,file_mode=0755,dir_mode=0777,iocharset=utf8,nounix,serverino,mapposix,nobrl,mfsymlinks,noperm,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1)
挂载选项mfsymlinks
是指Minshall+French 符号链接
解决方法
与其在容器内部创建符号链接,不如在外部(直接在 Windows 中)创建符号链接来解决问题。
在 cmd.exe 中使用普通的 mklink
输出
在 PowerShell 中通过 cmd 使用普通 mklink
输出
旁注:New-Item -ItemType SymbolicLink
无法解决使用glob(..., GLOB_ONLYDIR in PHP
-mklink /d
也在这里使用
在 Windows 上使用 Git-Bash
在以管理员身份执行 Git-Bash 时,我必须执行以下操作。在这里设置环境变量export
很重要 - 请参阅为 Cygwin 启用本机 NTFS 符号链接
辅助工具
我创建了帮助工具示例,用于XSym
在特定目录(与 TYPO3 相关public/typo3conf/ext/
)中搜索 Samba 指针并将 XSym 指针“升级”到正确的符号链接 - 执行这些脚本时可能需要管理员权限:
结果
现在再次从上面执行 PHP 示例会输出两个预期的项目
问题
在 Docker 容器中工作并且必须在主机系统上手动调整符号链接实际上只是一种解决方法,而不是解决方案。为了仅使用 Docker 容器创建正确的符号链接,可以在哪个级别进行增强和优化?
似乎这可以在不同的层次上解决:
- PHP的
glob
调用(尤其是flakyGLOB_ONLYDIR
flag) - glibc 的
glob
实现(尤其是Minshall+French symlinksXSym
) - Docker 不使用 Samba/CIFS 进行卷共享
更新
- 从
mklink /j
(junction) 切换到mklink /d
(symlinked directory) 因为删除链接的联结也删除了它的起源 - PowerShell 的符号链接 cmdlet
New-Item -ItemType SymbolicLink
(而不是以前的New-Item -ItemType Junction
)在 PHP 中再次无法解析glob(..., GLOB_ONLYDIR
- 因此,cmd /c mklink /d
在此处使用 - 添加了 Samba/CIFS 挂载信息