[英]How to pass arguments to the python script that is running inside docker container?
[英]Pass arguments to Python running in Docker container on AWS Fargate
將參數傳遞給運行Python腳本的Docker容器可以這樣做
docker run my_script:0.1 --arg1 val --arg2 val ...
我似乎無法弄清楚如何在AWS Fargate上運行容器時傳遞這些參數(也許它不起作用?)
您可以在ECS任務定義中使用容器定義參數來傳遞運行時參數。
命令參數映射到docker run中的COMMAND參數。
"command": [
"--arg1",
"val",
"--arg2",
"val"
],
也可以將參數作為環境變量傳遞。
"environment": [
{
"name": "LOG_LEVEL",
"value": "debug"
}
],
在ecs中,您將把容器作為任務運行。 因此,您將首先注冊包含容器定義的任務,然后您可以運行將參數作為環境變量傳遞的任務。
這是一個示例任務定義:
myscript-task.json :(一個示例任務定義)
{
"containerDefinitions": [
{
"name": "myscript",
"image": "12345123456.dkr.ecr.us-west-2.amazonaws.com/myscript:0.1",
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group" : "/ecs/fargate",
"awslogs-region": "us-west-2",
"awslogs-stream-prefix": "myscript"
}
}
}
],
"family": "myscript",
"networkMode": "awsvpc",
"executionRoleArn": "arn:aws:iam::12345123456:role/ecsTaskExecutionRole",
"cpu": "256",
"memory": "512",
"requiresCompatibilities": [
"FARGATE"
]
}
您將在控制台中或使用register-task-definition命令注冊任務 :
aws ecs register-task-definition --cli-input-json file://myscript-task.json
您現在可以使用ecs run-task命令運行該任務。 使用覆蓋參數,您將能夠使用不同的值運行相同的任務。
aws ecs run-task --cluster testCluster --launch-type FARGATE --task-definition myscript:1 --network-configuration 'awsvpcConfiguration={subnets=[subnet-0abcdec237054abc],assignPublicIp=ENABLED}' --overrides file://overrides.json
示例Overrides.json:
{
"containerOverrides": [{
"name": "myscript",
"environment": [{
"name": "VAR1",
"value": "valueOfVar1"
}]
}]
}
現在,您可以在python腳本中訪問該變量。
Python腳本(示例)打印傳遞的環境變量。
import os
print(os.environ['VAR1'])
配置日志驅動程序后,您將能夠在cloudwatch日志中看到輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.