fruition / mac-dev-shim
为使用docker-compose的Mac OS用户提供的性能和DX垫片。
Requires
- php: ^7.2
- symfony/filesystem: ^5.0
- symfony/finder: ^5.0
- symfony/yaml: ^5.0
This package is auto-updated.
Last update: 2022-08-14 23:28:57 UTC
README
关于此包:我需要它吗?
动机
Fruition已经将本地开发标准化为使用“原生”的Docker工作流程,即docker-compose
;也就是说,我们尽可能在本地运行与生产环境相同的镜像,并通过这种方式避免使用Lando、DDEV、Docksal等其他“Docker Plus”解决方案时不可避免的生态环境差异。这并不是贬低这些其他工具——因为它们有其用途,并且许多用户成功地使用了它们——但更原生的流程更适合我们的需求。许多上述工具实际上在底层使用docker-compose
,并添加各种语法和运行时糖来增强用户体验。
Mac OS和绑定挂载文件系统性能
正如在其他地方解释得很好的那样,在Docker for Mac中,绑定挂载的性能非常差,以至于几乎无法使用。使用这样的挂载的cached
或delegated
选项可以略微提高性能,然而我们的开发者发现,对于日常使用来说,这仍然是不接受的。Sean Handley、Jeff Geerling等人描述了配置和使用NFS挂载的方法,DDEV-local将自动NFS挂载配置集成为其Mac OS本地化的一部分。然而,前一种方法需要为每个项目手动配置,而后者完全集成到一个比我们希望使用的更重的工具链中。
此包的功能
此包存在是为了在docker-compose
调用周围提供一个包装器,以创建和利用Docker Compose 覆盖文件,使用NFS而不是绑定挂载,并提供简单的工具来执行一次性的NFS设置。
安装
Fruition是一家PHP店,因此我们假设我们的开发者在本地至少安装了PHP和composer
。此包使用Symfony Yaml组件,因此必须使用Composer进行安装。除了此包装之外,垫片必须位于一个已知的位置,该位置可以添加到开发者的PATH
中,以便在全局安装的docker-compose
可执行文件之前由shell选择。这可以通过每个项目使用direnv来完成,或者(最简单的方法)通过包含全球composer bin
目录,如下所示。
安装/过渡到 Docker Desktop for Mac
如果您尚未安装,请安装 Docker Desktop For Mac。如果您之前使用过 Docker Toolbox,请按照过渡说明进行操作。Mac OS 的 Docker 安装程序包括 docker-compose
。
使用 Composer 安装 shim
composer global require fruition/mac-dev-shim
如果尚未添加,请将以下内容添加到您的 ~/.bash_profile
(如果您使用的是 Bash,它是 Mac OS X 的默认值)
PATH="$HOME/.composer/vendor/bin:$PATH"
您需要重新启动终端会话才能使新值生效。
NFS 调试
- 使用
showmount -e
来查找通过 NFS 导出的内容。如果您的项目目录的父目录不在这里,那么 NFS 不能工作。 - 如果没有显示任何内容,请使用
nfsd checkexports
并仔细阅读错误。 - 使用
ps -ef | grep nfsd
确保nfsd正在运行。 - 使用
sudo nfsd restart
重新启动nfsd - 运行 Console.app,并在顶部搜索框中输入 "nfsd"。运行
sudo nfsd restart
并仔细阅读消息。
Shim 调试
要查看“组合”的 Yaml compose 文件,请运行 docker-compose config
。
用法
安装后,按常规调用 docker-compose
。
如果您的应用程序对 NFS 的使用敏感;例如,chown 操作(这将由 NFS 服务器拒绝),shim 还会将 HOST_OS
环境变量设置为 Darwin
。
版权和许可。
版权 2020 Fruition Growth LLC。MIT 许可。
一些组件集成并从以下地方获得许可
- DDEV-local:Apache 2.0 许可。请参阅集成文件以获取修改列表。