我通过heroku run bash
访问了dyno并创建了一个文件foo
。但是,当我从我的应用中检查时,它仍然找不到foo
。所以我通过尝试在dyno上安装nginx,打开autoindex
来深入挖掘,我可以确认这些文件与通过heroku run bash
和nginx访问的文件不同。这是为什么?如何将文件放到正在运行的进程显示的文件系统中。
答案 0 :(得分:2)
当您发出heroku run bash
时,会为此一次性创建新的dyno,并且您可以访问它。注销后,您创建的任何文件都将“消失”,因为Heroku文件系统是短暂的。
这意味着只要创建新的dyno或重新启动dyno,文件系统就会恢复到其本机状态。 “本机”状态就是你的子弹 - 你的应用程序的“编译”版本 - 无论是你在“git push”到Heroku之后由build-pack构建的。
如果你想让你所有的Dynos都有一个只读文件,可以把它放在你的slug中(例如:把它包含在git中,也可以使用不同的build-pack),或者把它放在你的所有地方dynos可以访问(如共享数据库,Redis / Memcache实例,或大多数逻辑:S3)。