繁体   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