方法1 dockerfile方式
1 编写dockerfile文件(方法1)
FROM openjdk:11.0.3-jdk-stretch
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
VOLUME /tmp
ADD target/device-manager.jar app.jar
# spring.profiles.active指定启动环境
#-c为清除以前启动的数据
#方法1
ENTRYPOINT ["java","-jar","/app.jar","--spring.profiles.active=${profiles}","-c"]
#web端口
EXPOSE 8083
2 构建镜像
docker build -t test-profiles .
3 docker启动命令传值(pre环境)覆盖springboot项目默认配置环境(local)
docker run -e "profiles=pre" -it --rm test-profiles
或者
docker run -e profiles="pre" -it --rm test-profiles
我springboot项目的application配置如下,默认配置环境(local)
spring:
application:
name: device-manager
profiles:
active: local
ok=================
方法2,更简便:ENTRYPOINT 里不指定接收的环境变量,直接在docker运行时指定环境就行
或者
#方法2,这里不写spring.profiles.active,,
#ENTRYPOINT ["java","-jar","/app.jar","-c"]
docker运行命令如:
docker run -e "spring.profiles.active=prod" -it --rm pp
或者
docker run -e "SPRING_PROFILES_ACTIVE=prod" -it --rm pp
spring.profiles.active 和 SPRING_PROFILES_ACTIVE 是springboot识别的环境变量