Spring Boot позволяет задавать конфигурацию с помощью множества различных способов:
Spring Boot использует очень специфический порядок PropertySource, который разработан для обеспечения разумного переопределения значений , Свойства рассматриваются в следующем порядке:
- Свойства глобальных настроек Devtools для вашего домашнего каталога (~ / .spring-boot-devtools.properties, когда активен devtools).
- @ TestPropertySource аннотации в ваших тестах.
- @ SpringBootTest # свойства атрибута аннотации в ваших тестах.
- Аргументы командной строки.
- Свойства из SPRING_APPLICATION_ JSON (встроенные JSON встроены в переменная окружения или системное свойство)
- Параметры инициализации ServletConfig.
- Параметры инициализации ServletContext.
- Атрибуты JNDI из java: comp / env.
- Java Системные свойства (System.getProperties ()).
- Переменные среды ОС.
- RandomValuePropertySource, свойства которого имеют только случайные свойства. *.
- Профиль-спецификация c свойства приложения за пределами вашего упакованного jar-файла (application- {profile} .properties и YAML-варианты)
- Профиль-спецификация c свойства приложения pac kaged внутри вашего jar (application- {profile} .properties и YAML-варианты)
- Свойства приложения вне вашего упакованного jar (application.properties и YAML-варианты).
- Свойства приложения, упакованные внутри вашего jar-файла (application.properties и YAML-варианты).
- @ PropertySource аннотации к вашим классам @Configuration.
- Свойства по умолчанию (задаются с помощью SpringApplication.setDefaultProperties).
Самое простое - установить переменные среды для определения контейнера ECS , чтобы они внедрялись в задачу во время выполнения. Это также переопределит любые свойства, установленные в application.properties
из-за их упорядочения.
Очень простой c пример определения задачи в 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
}