hugochinchilla/botanist

从项目目录中删除所有根目录

安装: 56

依赖项: 0

建议者: 0

安全性: 0

星标: 7

关注者: 2

分支: 0

开放问题: 0

类型:composer-plugin

v0.2 2023-09-29 13:45 UTC

This package is auto-updated.

Last update: 2024-09-30 01:46:50 UTC


README

Run test suite

banner

将此插件添加到您的 composer.json,以防止在 Docker 上运行时 composer 创建由 root 拥有的文件。

composer require hugochinchilla/botanist

为什么是这个项目?

我非常喜欢的一点是,只需要在克隆后运行 docker compose up 就可以运行任何开发环境,无需进行任何设置,无需阅读 README 文件,对我来说这就是开发者的天堂。

将 Docker 配置为以不同于 root 的用户运行时,一个典型问题是需要在使用之前在 dotenv 文件中自定义用户 id,这让我感到不快。

它是如何工作的?

它设置了一个钩子,在可能写入 vendor/ 目录或更新 composer.lock 文件的命令之后运行。钩子将检查父目录的所有者/组,并将相同的所有权设置到文件上。

它只能在 composer 以 root 身份运行时执行此操作,因此如果您不以 root 身份安装它,则直到您以 root 身份执行任何安装/更新操作之前,您将看不到所有权发生变化。

这比不以 root 身份运行 Docker 好吗?

不。最佳实践是不以 root 身份运行容器,但如果您无论如何都以此身份运行,这将解决一个常见问题。

替代方案是什么?

您可以使用 dotenv 文件和以下代码片段的组合

# .env
USER_ID=1000 # get yours running `id -u`

# docker-compose.yml
services:
  php:
    image: php:some-version
    user: ${USER_ID:-1000}:${USER_ID:-1000}
    ...

这将使 Docker 容器以与您相同的用户运行。如果您没有在 dotenv 文件中定义 USER_ID,它将使用 1000 作为默认值,但有很大可能性这个 id 就是您的。

但如果您想创建一个任何用户都可以克隆并只需运行 docker compose up 而无需任何先前设置的仓库,请使用 botanist。