9-docker、dockerfile配置springboot多环境启动,亲测

方法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识别的环境变量

你可能感兴趣的:(9-docker、dockerfile配置springboot多环境启动,亲测)