spring boot profiles 实现多环境下配置切换 docker版

1,前言

开发环境总需要调试,docker直接部署不需要调试,环境配置不一样,这里的目的只是,在docker文件环境与开发环境使用不同的配置文件,项目结构如下

spring boot profiles 实现多环境下配置切换 docker版

2,设置项目配置文件

默认配置文件 application.yml

spring:
  profiles:
    active: ${spring.profiles.active}

这里有个占位符:${spring.profiles.active} 可以在pom.xml,dockerfile,或 maven(mvn package –P dev)编译时带入,当然也可直接写死 dev 或 prod等

开发配置文件 application-dev.yml

开发配置
server:
  port: 8082

生成环境配置文件 application-prod.yml

生产配置
server:
  port: 8081

3,修改pom.xml文件

加入 profiles 环境配置,这里用于测试 在profiles 组中加入 dev,test ,prod 分别代表,开发,测试,生成三个环境的配置

 <profiles>
        <profile>
            <id>devid>
            <properties>
                <spring.profiles.active>devspring.profiles.active>
            properties>

            <activation>
                <activeByDefault>trueactiveByDefault>
            activation>
        profile>
        <profile>
            <id>testid>
            <properties>
                <spring.profiles.active>testspring.profiles.active>
            properties>
        profile>
        <profile>
            <id>prodid>
            <properties>
                <spring.profiles.active>prodspring.profiles.active>
            properties>
        profile>
    profiles>

build 中加入一个plugin节点内容如下,主要是为了修改spring配置文件占位符(注意是添加不是修改)。

<plugin>
    <groupId>org.apache.maven.pluginsgroupId>
    <artifactId>maven-resources-pluginartifactId>
    <configuration>
        <delimiters>

            <delimiter>${*}delimiter>
        delimiters>

        <useDefaultDelimiters>trueuseDefaultDelimiters>
    configuration>
plugin>

build 中加入一个plugin节点内容如下,这个主要用于docker 的编译

<plugin>

    <groupId>com.spotifygroupId>
    <artifactId>docker-maven-pluginartifactId>
    <version>1.2.0version>
    <configuration>
        <imageName>${docker.image.prefix}/${project.artifactId}imageName>
        <dockerDirectory>src/main/dockerdockerDirectory>
        <resources>
            <resource>
                <targetPath>/targetPath>
                <directory>${project.build.directory}directory>
                <include>${project.build.finalName}.warinclude>
            resource>
        resources>
    configuration>
plugin>

3,创建一个Dockerfile文件

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD demo-docker-0.0.1-SNAPSHOT.war app.war
RUN sh -c 'touch /app.war'
RUN echo "Asia/Shanghai" > /etc/timezone
#这里prod代表生产环境
ENV spring.profiles.active="prod"
ENTRYPOINT ["java","-jar","/app.war"]

文件内容这里不多做解释

4,测试

(1)直接在idea中启用调试

因为pom.xml的profiles节点中设置了”dev”为默认,所以这里,默认启用调试时,走的是”dev”

(2)设置Run/Debug configurations 的Active profiles = prod 覆盖 pom.xml默认配置dev为”prod”

spring boot profiles 实现多环境下配置切换 docker版

运行结果如下:

spring boot profiles 实现多环境下配置切换 docker版

发现这里已经修改为 prod

(3),使用marvn编译命令覆盖默认环境配置,在项目目录执行命令如下:

Perl;gutter:true;
mvn package -P prod

执行结果如下:

spring boot profiles 实现多环境下配置切换 docker版

(4),执行docker编译

spring boot profiles 实现多环境下配置切换 docker版

启动docker结果如下:

spring boot profiles 实现多环境下配置切换 docker版

五,注意事项

1,application,Dokerfile,pom.xml 节点名称要一致”spring.profiles.active”

spring boot profiles 实现多环境下配置切换 docker版

Original: https://www.cnblogs.com/ejiyuan/p/10362837.html
Author: ejiyuan
Title: spring boot profiles 实现多环境下配置切换 docker版

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/534941/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球