[英]How to use environment variables for a docker image in AWS-ECR?
我从具有application.properties
的 Spring-Boot-App 制作了 docker 图像。 例如,一个属性是user.name=xxx
。 现在我将图像上传到 AWS-ECR 存储库。 有没有办法通过 ECS-Task 或其他方式注入这个变量? 对于部署,我使用 Terraform。
Spring Boot 允许您通过多种不同方式设置配置:
Spring 引导使用非常特殊的 PropertySource 顺序,该顺序旨在允许明智地覆盖值。 属性按以下顺序考虑:
- 主目录上的 Devtools 全局设置属性(当 devtools 处于活动状态时为 ~/.spring-boot-devtools.properties)。
- 测试中的 @TestPropertySource 注释。
- 测试中的 @SpringBootTest#properties 注释属性。
- 命令行 arguments。
- 来自 SPRING_APPLICATION_JSON 的属性(嵌入在环境变量或系统属性中的内联 JSON)
- ServletConfig 初始化参数。
- ServletContext 初始化参数。
- 来自 java:comp/env 的 JNDI 属性。
- Java 系统属性(System.getProperties())。
- 操作系统环境变量。
- 仅具有随机属性的 RandomValuePropertySource。*。
- 打包的 jar 之外的配置文件特定应用程序属性(应用程序-{profile}.properties 和 YAML 变体)
- 封装在 jar 中的配置文件特定应用程序属性(application-{profile}.properties 和 YAML 变体)
- 打包的 jar 之外的应用程序属性(application.properties 和 YAML 变体)。
- 打包在 jar 中的应用程序属性(application.properties 和 YAML 变体)。
- @Configuration 类上的 @PropertySource 注释。
- 默认属性(使用 SpringApplication.setDefaultProperties 指定)。
最简单的事情是为 ECS 容器定义设置环境变量,以便它们在运行时注入到任务中。 由于它们的顺序,这也将覆盖application.properties
中设置的任何属性。
Terraform 中任务定义的一个非常基本的示例如下所示:
resource "aws_ecs_task_definition" "example" {
family = "example"
container_definitions = <<TASK_DEFINITION
[
{
"cpu": 10,
"command": ["sleep", "10"],
"entryPoint": ["/"],
"environment": [
{
"name": "USER_NAME"
"value": "xxx"
}
],
"essential": true,
"image": "example",
"memory": 128,
"name": "example",
"portMappings": [
{
"containerPort": 80,
"hostPort": 8080
}
]
}
]
TASK_DEFINITION
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.