【问题标题】:Heroku Buildpack directory missing after creation in compile step在编译步骤中创建后 Heroku Buildpack 目录丢失
【发布时间】:2020-05-11 15:47:55
【问题描述】:

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

下面是相关的sn-p。

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"

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

【问题讨论】:

    标签: heroku buildpack pyenchant enchant


    【解决方案1】:

    我想你会想在/app 以外的地方创建目录。那是因为当 buildpack 运行时,它是在一个临时目录中完成的。大多数情况下,您想要的目录是pwd。你的 buildpack 可能看起来像这样:

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

    【讨论】:

    • 成功了!使用 bash 登录已确认已检测到字典。请问你是怎么知道使用 $(pwd) 的? Heroku 提供的有关制作自己的 buildpack 的文档非常少。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    相关资源
    最近更新 更多