我有一个 docker 容器(源自 PHP-CLI),可以在本地像这样启动:
docker run php-cli-container php public/index.php argument1 argument2
我将容器上传到 Amazon AWS ECR 并将其实施到 ECS 计划任务中。一切都已正确设置,并且该任务现在实际上每小时都在 AWS 上运行。
输入存储在 EventBridge 中如下:
{
"containerOverrides": [{
"name": "php-api-cli",
"command": ["php public/index.php argument1 argument2"]
}]
}
不幸的是,这似乎不起作用。CloudWatch 报告以下错误:
/usr/local/bin/docker-php-entrypoint: 9: exec: php public/index.php argument1 argument2: not found
如何将参数正确地传递php public/index.php argument1 argument2
到 AWS Fargate 任务中?
答案1
为了实现 OP 的要求,我们必须这样写:
{
"containerOverrides": [{
"name": "php-api-cli",
"command": ["php", "public/index.php", "argument1", "argument2"]
}]
}
解释:
在 OP 的情况下,AWS 传递docker run php-cli-container "php public/index.php argument1 argument2"
给容器。
为了避免该问题,我们必须将所有参数分成单独的字符串值并放入command
数组中。