我正在使用Google Cloud Run托管一些解决方案。当容器启动时,程序可以写入磁盘,并且数据将一直保留到容器停止。但是,从系统角度来看,容器的所有分区始终报告零可用空间。我以几种方式确认了这一点:
cityAndState.Add((item.city, item.stateabbr));
开始运行df
会在容器启动时显示零可用空间start.sh
运行df
仍显示零可用空间start.sh
,PHP脚本等向磁盘进行写操作,因此系统确实具有可写入内存的可用空间,但是start.sh
仍然报告零可用空间(以上所有操作均已将容器部署到Cloud Run。通过Docker从Cloud Shell手动运行同一容器并执行df
报告可用空间)。
问题在于某些应用程序在启动时会执行磁盘空间检查,并且无法加载到Google Cloud Run中。例如,MariaDB在其init script中使用df
,因此注释掉这些行使得可以向Cloud Run容器添加静态但功能正常的MariaDB实例。
MariaDB使这变得容易。现在,我正在尝试对PostgreSQL和RabbitMQ做同样的事情,但是在弄清楚如何覆盖它们的磁盘空间检查时遇到了麻烦。这是我正在考虑的两个选项:
是否有人熟悉Postgres或RabbitMQ的源代码,或者有一个我可以实施的系统范围的解决方案来“欺骗”可用的可用空间?
编辑:这是RabbitMQ和PostgreSQL给出的错误消息
RabbitMQ:
df
Postgres:
{error,{cannot_log_to_file,"/var/log/rabbitmq/rabbit@localhost.log",{error,einval}}}