fruition/mac-dev-shim

此包已被废弃,不再维护。未建议替代包。

为使用docker-compose的Mac OS用户提供的性能和DX垫片。

v1.0.1 2020-06-04 22:57 UTC

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中,绑定挂载的性能非常差,以至于几乎无法使用。使用这样的挂载的cacheddelegated选项可以略微提高性能,然而我们的开发者发现,对于日常使用来说,这仍然是不接受的。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 许可。请参阅集成文件以获取修改列表。