簡體   English   中英

如何在 AWS-ECR 中為 docker 映像使用環境變量?

[英]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 順序,該順序旨在允許明智地覆蓋值。 屬性按以下順序考慮:

  1. 主目錄上的 Devtools 全局設置屬性(當 devtools 處於活動狀態時為 ~/.spring-boot-devtools.properties)。
  2. 測試中的 @TestPropertySource 注釋。
  3. 測試中的 @SpringBootTest#properties 注釋屬性。
  4. 命令行 arguments。
  5. 來自 SPRING_APPLICATION_JSON 的屬性(嵌入在環境變量或系統屬性中的內聯 JSON)
  6. ServletConfig 初始化參數。
  7. ServletContext 初始化參數。
  8. 來自 java:comp/env 的 JNDI 屬性。
  9. Java 系統屬性(System.getProperties())。
  10. 操作系統環境變量。
  11. 僅具有隨機屬性的 RandomValuePropertySource。*。
  12. 打包的 jar 之外的配置文件特定應用程序屬性(應用程序-{profile}.properties 和 YAML 變體)
  13. 封裝在 jar 中的配置文件特定應用程序屬性(application-{profile}.properties 和 YAML 變體)
  14. 打包的 jar 之外的應用程序屬性(application.properties 和 YAML 變體)。
  15. 打包在 jar 中的應用程序屬性(application.properties 和 YAML 變體)。
  16. @Configuration 類上的 @PropertySource 注釋。
  17. 默認屬性(使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM