cse*_*ell 14 amazon-web-services docker
我在亚马逊的ECS中有一个工作容器,它将程序作为一项任务运行.我想传递一些程序参数,就像在本地运行时一样docker run.我已经设法在ECS中的容器配置中传递一个新的入口点,就像我在docker run命令行中传递它一样.
不幸的是,当这样做时,我将覆盖已在图像中定义的内部入口点.我想使用内部入口点,只需添加一些命令行参数,比如--debug选项.有没有办法做到这一点?
提前致谢.
Rom*_*her 15
1.如果您通常将命令行参数传递给脚本,例如
python myscript.py --debug --name "joe schmoe" --quality best --dimensions 1920 1080
Run Code Online (Sandbox Code Playgroud)
2.你有一个 docker 镜像,有一个入口点来运行这个脚本,比如
FROM python:3.7-alpine
# Add the application folder to the container
COPY . /myscript
WORKDIR /myscript
# Install required packages
RUN pip install -r requirements.txt --upgrade
# Run the script when the container is invoked
ENTRYPOINT ["python", "myscript.py"]
Run Code Online (Sandbox Code Playgroud)
3.然后,当通过 aws ecs 用户界面编辑任务/容器定义时,您必须将参数放入容器设置“环境”部分下的“命令”字段中,并用逗号替换参数和值之间的所有空格,例如所以:
--debug,--name,joe schmoe,--quality,best,--dimensions,1920,1080
Run Code Online (Sandbox Code Playgroud)
带有空格的项目joe schmoe被引用为“joe schmoe”,这就是为什么像--quality best这样的东西不起作用,而是需要用逗号分隔为--quality,best
4、创建任务后,查看任务定义中的容器详情,命令显示为:
["--debug","--name","joe schmoe","--quality","best","--dimensions","1920","1080"]
Run Code Online (Sandbox Code Playgroud)
这与Dockerfile 中的CMD指令接受的语法相同。
udo*_*dan 10
在 ECS 中运行任务时,您可以指定容器覆盖。
在 AWS 控制台中,这可以在“高级选项”部分的底部找到。
在 CLI 上,您可以传入一个带有覆盖的 JSON 对象,如下所示:
aws ecs run-task ... --overrides '{"containerOverrides": [{"name": "whatever", "command": ["foo", "bar"}]}'
Run Code Online (Sandbox Code Playgroud)
该command是CMD一个获取容器内执行。
以同样的方式,环境变量可以传递给容器。以下是aws-cli 文档中描述的可能选项列表:
{
"containerOverrides": [
{
"name": "string",
"command": ["string", ...],
"environment": [
{
"name": "string",
"value": "string"
}
...
],
"cpu": integer,
"memory": integer,
"memoryReservation": integer
}
...
],
"taskRoleArn": "string",
"executionRoleArn": "string"
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因name,必须在覆盖中设置始终。¯\_(?)_/¯
| 归档时间: |
|
| 查看次数: |
8130 次 |
| 最近记录: |