方法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指定啟動環(huán)境
#-c為清除以前啟動的數(shù)據(jù)
#方法1
ENTRYPOINT ["java","-jar","/app.jar","--spring.profiles.active=${profiles}","-c"]
#web端口
EXPOSE 8083
2 構(gòu)建鏡像
docker build -t test-profiles .
3 docker啟動命令傳值(pre環(huán)境)覆蓋springboot項目默認配置環(huán)境(local)
docker run -e "profiles=pre" -it --rm test-profiles
或者
docker run -e profiles="pre" -it --rm test-profiles
我springboot項目的application配置如下贞绵,默認配置環(huán)境(local)
spring:
application:
name: device-manager
profiles:
active: local
ok=================
方法2厉萝,更簡便:ENTRYPOINT 里不指定接收的環(huán)境變量,直接在docker運行時指定環(huán)境就行
或者
#方法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識別的環(huán)境變量