我知道这是一个非常模糊的问题,但我希望更有知识的人可以提供帮助。
我的设置如下:
- 我有一个简单的节点 Docker 容器
- 我用它从 CLI 运行 Node.js 脚本
- 我想用 cron 每个 X 运行这些脚本
为此,我有以下命令:
(cd ~/docker/docker-node && docker compose run --rm -w /home/node/app/scripts docker-node-container npm run my-script)
上面的命令可以分解如下:
cd ~/docker/docker-node
将工作目录设置为我的docker-compose.yml
文件所在的位置docker compose run --rm -w /home/node/app/scripts docker-node-container
在特定 docker 容器内的特定工作目录中运行命令npm run my-script
运行实际的 Node.js 脚本
我已经从 CLI 测试了该命令,它运行良好,按预期输出控制台日志。
(cd ~/docker/docker-node && docker compose run --rm -w /home/node/app/scripts docker-node-container npm run my-script)
> [email protected] my-script
> node ./dist/my-script.js
Script is running.
所以我通过运行以下命令将其添加到 cron 中sudo crontab -e
:
# Run every hour
0 * * * * (cd ~/docker/docker-node && docker compose run --rm -w /home/node/app/scripts docker-node-container npm run my-script)
然后我去检查我的日志sudo grep CRON /var/log/syslog
:
2024-05-10T08:18:01.787598+00:00 vps CRON[831969]: (root) CMD ((cd ~/docker/docker-node && docker compose run --rm -w /home/node/app/scripts docker-node-container npm run my-script))
2024-05-10T08:18:01.791485+00:00 vps CRON[831968]: (CRON) info (No MTA installed, discarding output)
这不仅不包括我的脚本应该创建的任何日志,而且在检查我的 API 日志后,我可以知道该脚本实际上并未访问它应该向其发出请求的任何端点。
为什么?