部署容器化Directus到AWS Lambda遇只读错误,如何修改Node缓存路径?
解决AWS Lambda部署Directus容器时的只读文件系统错误
问题核心
部署容器化Directus到AWS Lambda后触发报错,提示无法在/directus/.cache创建目录(Lambda仅/tmp目录可写),之前设置的NODE_CACHE等环境变量无效,因为Directus使用专属的配置变量来指定缓存和临时文件路径。
解决方案
1. 配置Directus专属环境变量
添加以下环境变量,将Directus的缓存和临时文件路径指向Lambda的可写目录/tmp:
CACHE_PATH="/tmp/directus-cache" TEMP_PATH="/tmp/directus-tmp" npm_config_cache="/tmp/.npm" # 保留npm缓存配置
2. 启动前创建必要目录
Lambda的/tmp目录每次启动都会重置,必须在Directus启动前手动创建上述目录。修改Dockerfile的启动命令:
CMD ["sh", "-c", "mkdir -p /tmp/directus-cache /tmp/directus-tmp && npx directus start"]
3. 验证配置生效
重新构建镜像并部署后,Directus会将缓存和临时文件写入/tmp下的指定目录,避免触发只读文件系统错误。
完整错误日志
2023-07-05T17:19:59.015+02:00 node:internal/process/promises:288 2023-07-05T17:19:59.015+02:00 triggerUncaughtException(err, true /* fromPromise */); 2023-07-05T17:19:59.015+02:00 ^ 2023-07-05T17:19:59.015+02:00 [Error: EROFS: read-only file system, mkdir '/directus/.cache'] { 2023-07-05T17:19:59.015+02:00 errno: -30, 2023-07-05T17:19:59.015+02:00 code: 'EROFS', 2023-07-05T17:19:59.015+02:00 syscall: 'mkdir', 2023-07-05T17:19:59.015+02:00 path: '/directus/.cache' 2023-07-05T17:19:59.015+02:00 } 2023-07-05T17:19:59.015+02:00 Node.js v18.16.1 2023-07-05T17:19:59.910+02:00 node:internal/process/promises:288 2023-07-05T17:19:59.910+02:00 triggerUncaughtException(err, true /* fromPromise */); 2023-07-05T17:19:59.910+02:00 ^ 2023-07-05T17:19:59.910+02:00 [Error: EROFS: read-only file system, mkdir '/directus/.cache'] { 2023-07-05T17:19:59.910+02:00 errno: -30, 2023-07-05T17:19:59.910+02:00 code: 'EROFS', 2023-07-05T17:19:59.910+02:00 syscall: 'mkdir', 2023-07-05T17:19:59.910+02:00 path: '/directus/.cache' 2023-07-05T17:19:59.910+02:00 } 2023-07-05T17:19:59.910+02:00 Node.js v18.16.1 2023-07-05T17:19:59.935+02:00 START RequestId: 46921599-988b-4341-9198-62c8e646ed83 Version: $LATEST 2023-07-05T17:19:59.936+02:00 RequestId: 46921599-988b-4341-9198-62c8e646ed83 Error: Runtime exited with error: exit status 1 Runtime.ExitError 2023-07-05T17:19:59.936+02:00 END RequestId: 46921599-988b-4341-9198-62c8e646ed83 2023-07-05T17:19:59.936+02:00 REPORT RequestId: 46921599-988b-4341-9198-62c8e646ed83 Duration: 859.43 ms Billed Duration: 860 ms Memory Size: 1024 MB Max Memory Used: 30 MB
内容的提问来源于stack exchange,提问作者FRumbo
相关产品推荐
相关产品推荐

