在Docker中为Spring Boot应用设置环境变量可以通过几种方式完成。以下是一个示例,展示如何为Spring Boot应用设置普通变量和列表变量作为环境变量。
首先,在application.properties
或application.yml
中定义占位符:
# application.properties
my.variable=${MY_VARIABLE}
my.list=${MY_LIST:}
接下来,在Dockerfile中使用ENV
指令为这些变量赋值:
# Dockerfile
FROM openjdk:11-jre-slim
ADD target/spring-boot-app.jar /app.jar
ENV MY_VARIABLE="someValue"
ENV MY_LIST="item1,item2,item3"
ENTRYPOINT ["java","-jar","/app.jar"]
在这个Dockerfile中,MY_VARIABLE
被赋予了一个字符串值someValue
,而MY_LIST
被赋予了一个以逗号分隔的字符串列表item1,item2,item3
。
当运行Docker容器时,这些环境变量将被读取并替换到Spring Boot应用的配置中。
要在运行容器时动态设置这些变量,可以使用docker run
命令的-e
或--env
选项:
docker run -e MY_VARIABLE="newValue" -e "MY_LIST=itemA,itemB,itemC" my-spring-boot-app
这将覆盖Dockerfile中设置的默认值。
请注意,在Spring Boot中,列表变量应该用逗号分隔,并且在处理时会被自动转换成List
类型。