[英]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.