在aws ecs中docker运行程序参数

pnwntuvh  于 2023-03-01  发布在  Docker
关注(0)|答案(5)|浏览(147)

我在Amazon的ECS中有一个工作容器,它将程序作为任务运行。我想传递一些程序参数,就像我在本地运行docker run时所做的那样。我已经设法在ECS的容器配置中传递了一个新的入口点,就像我在docker run命令行中传递它一样。
不幸的是,当这样做时,我覆盖了映像中已经定义的内部入口点。我想使用内部入口点,只是添加一些命令行参数,如--debug选项。有什么方法可以做到这一点吗?
先谢了。

e4yzc0pl

e4yzc0pl1#

**1.**如果您通常向脚本传递命令行参数,例如

python myscript.py --debug --name "joe schmoe" --quality best --dimensions 1920 1080

**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"]

3.然后,当通过aws ecs用户界面编辑任务/容器定义时,必须将参数放入容器设置的“Environment”部分下的“Command”字段中,并用逗号替换参数和值之间的所有空格,如下所示:

--debug,--name,joe schmoe,--quality,best,--dimensions,1920,1080

joe schmoe这样带有空格的项目被引用为“joeschmoe”,这就是为什么像--quality best这样的项目不能工作,而是需要用逗号分隔为--quality,best

**4.**创建任务后,如果查看任务定义中的容器详细信息,则命令显示为:

["--debug","--name","joe schmoe","--quality","best","--dimensions","1920","1080"]

其与对接文件中的CMD指令所接受的语法相同。

slhcrj9b

slhcrj9b2#

在ECS中运行任务时,可以指定容器覆盖
在AWS控制台中,可在底部的 * 高级选项 * 部分找到此选项。

在CLI上,可以传入一个JSON对象,并使用如下重写:

aws ecs run-task ... --overrides '{"containerOverrides": [{"name": "whatever", "command": ["foo", "bar"}]}'

command是在容器内执行的CMD
同样的,环境变量也可以传递给容器,下面是aws-cli文档中描述的可能选项列表:

{
  "containerOverrides": [
    {
      "name": "string",
      "command": ["string", ...],
      "environment": [
        {
          "name": "string",
          "value": "string"
        }
        ...
      ],
      "cpu": integer,
      "memory": integer,
      "memoryReservation": integer
    }
    ...
  ],
  "taskRoleArn": "string",
  "executionRoleArn": "string"
}

由于某种原因,name必须始终在覆盖中设置。

5anewei6

5anewei63#

在AWS控制台中创建新的ECS任务修订版本时,可以为容器入口点添加命令行参数。打开容器设置,在ENVIRONMENT标签下,将逗号分隔的命令行参数列表放入"命令"字段。
示例:

--debug,--packages,org.apache.hadoop:hadoop-aws:2.7.3

将向容器入口点添加2个命令行参数。

cvxl0en2

cvxl0en24#

这很容易:命令行参数可以作为ECS配置中的Command而不是入口点传递。

qc6wkl3g

qc6wkl3g5#

使用ecs任务定义中的环境部分注入配置。

"environment" : [
    { "name" : "string", "value" : "string" },
    { "name" : "string", "value" : "string" }
]

请参阅以下aws文档http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_environment

相关问题