Я знаю, что у Heroku эфемерная файловая система:
У каждого dyno есть своя эфемерная файловая система со свежей копией самого последнего развернутого кода.В течение срока службы динамометрического стенда его запущенные процессы могут использовать файловую систему в качестве временной блокнота, но записанные файлы не видны процессам в любом другом динамометрическом стенде, и любые записанные файлы будут отброшены в тот момент, когда динамометрический блок остановлен или перезапущен.Например, это происходит каждый раз, когда динамо заменяется из-за развертывания приложения и примерно один раз в день в рамках обычного управления динамо.
Но когда мне нужно было отладить в динамо, изменения неотражается на всех.
Шаг для воспроизведения:
создание некоторого случайного динамо, а затем ssh / exec для этих динамо:
$ heroku ps:exec
Running this command for the first time requires a dyno restart.
Do you want to continue? [y/n]: y
Initializing feature... done
Restarting dynos... done
Waiting for web.1 to start... done
Establishing credentials... done
Connecting to web.1 on ⬢ wiwi123...
Это текущее содержимое файла.И мы можем просто curl
запрос доказать
~ $ curl wiwi123.herokuapp.com
hello world
Но когда я пытаюсь изменить его
~ $ echo 'another' >> index.php
Текущий контент становится
~ $ cat index.php
hello world
another
Каким-то образомзапрос не отражается:
~ $ curl wiwi123.herokuapp.com
hello world
И я знаю, что Heroku все еще ссылается на этот файл, потому что если мы удалим / переименуем его.Это будет отражено.
~ $ mv index.php old.php
~ $ curl wiwi123.herokuapp.com
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /
on this server.<br />
</p>
</body></html>