在编译步骤中创建后缺少 Heroku Buildpack 目录

Heroku Buildpack directory missing after creation in compile step

我有一个 buildpack make 来编译附魔词典,但在 dyno 部署后目录仍然存在问题。

下面是相关片段。

DEFAULT_DIR_ENCHANT_DICTS="/app/.enchant/myspell"
mkdir -p $DEFAULT_DIR_ENCHANT_DICTS
cd /app/.enchant/myspell
echo $PWD

我已经确认该目录是在编译期间通过 cd 创建的,否则它会失败,并在更改后打印它。但是在部署之后,在应用程序上执行 heroku run bash 然后尝试访问该目录表明它实际上并没有被创建。

我怀疑这与 heroku 是短暂的有关,因此没有保留这些更改,但我还没有找到任何关于保护目录在部署前不被擦除的文档。

有趣的是,我也创建了这个文件夹:

"/app/.heroku/python/lib/python3.6/site-packages/enchant/share/enchant/myspell"

哪个不会被擦除,让我相信某些文件夹不会被擦除;但是,enchant 要求文件位于此特定位置才能被检测到,因为它目前似乎无法通过 site-packages 文件夹检测到它们。

我想你会想在 /app 以外的地方创建目录。那是因为当 buildpack 运行时,它是在临时目录中完成的。对于大多数用途,您想要的目录是 pwd。您的 buildpack 可能如下所示:

DEFAULT_DIR_ENCHANT_DICTS="$(pwd)/.enchant/myspell"
mkdir -p $DEFAULT_DIR_ENCHANT_DICTS
cd .enchant/myspell
echo $PWD