【发布时间】:2020-11-02 03:25:21
【问题描述】:
我们正在使用 Terraform 动态启动 AWS ECS/Fargate 容器以运行 Spring Boot 应用程序,并且需要将多个命令行参数传递到应用程序中。可用的文档似乎表明执行此操作的正确方法是在 Terraform 容器定义 JSON 中定义一个“命令”块,并在那里指定一个或多个参数。这是我当前的容器定义:
[{
"name": "${environment}-${app_name}",
"image": "${app_image}",
"cpu": ${fargate_cpu},
"memory": ${fargate_memory},
"networkMode": "awsvpc",
"command": [
"--server.port",
"${app_port}"
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "${environment}-${app_name}",
"awslogs-region": "${aws_region}",
"awslogs-stream-prefix": "ecs"
}
},
"portMappings": [
{
"containerPort": ${app_port},
"hostPort": ${app_port}
}
]}]
您会注意到我已经使用参数 --server.port 定义了 命令块,并将其值设置为 app_port 变量。然而,在部署时,容器内运行的 Spring Boot 应用程序不会获取此参数,而是使用默认端口。
我的问题很简单:应该如何为在 Fargate 容器中运行的应用程序指定命令行参数?
【问题讨论】:
标签: spring-boot terraform amazon-ecs aws-fargate