使用docker-compose发布springboot项目以及springboot配置文件在不同位置时的优先级

1 位置相同时,后缀不同的优先级

当properties、yaml和yml三种文件路径相同时,三个文件中的配置信息都会生效,但是当三个文件中有配置信息冲突时,加载顺序是:

yml > yaml > properties

2 配置文件在不同位置时的优先级

创建一个springboot项目
controller层

@RestController
@RequestMapping
public class TestController {

    @Value("${person.name}")
    private String name;

    @GetMapping("/test")
    public String test(){
        return name;
    }

}

yml配置文件

server:
  port: 7777
person:
  name: lvxy

2.1 默认启动,配置文件打包进jar包

默认启动时,无其他位置配置文件,则加载默认的配置文件

java -jar xxx.jar
在这里插入图片描述

2.2 在jar包同级目录下也有一份配置文件

jar包同一目录下优先级大于默认配置

在这里插入图片描述
application.yml

server:
  port: 7777
person:
  name: lvxy

启动
在这里插入图片描述

2.3 docker-compose部署时,docker-compose文件中也包含配置(重点)

docker-compose中优先级最高,而且同一docker-compose文件中后面配置会覆盖前面配置

项目目录
在这里插入图片描述

Dockerfile文件

FROM openjdk:8-jdk-alpine
WORKDIR /code
COPY 11-ymltest-0.0.1-SNAPSHOT.jar 11-ymltest-0.0.1-SNAPSHOT.jar
COPY application.yml application.yml
CMD ["java","-jar","11-ymltest-0.0.1-SNAPSHOT.jar"]

application.yml

server:
  port: 7777
person:
  name: lvxy

docker-compose文件

version: "3.1"
services:
  java:
    build: .
    environment:
      person.name: liujian
    environment:
      person.name: liao
    ports:
      - 7777:7777

构建运行

[root@k8s-master java]# docker-compose up -d --build

Creating network "java_default" with the default driver
Building java
Step 1/5 : FROM daocloud.io/library/java:8-jdk-alpine
 ---> 3fd9dd82815c
Step 2/5 : WORKDIR /code
 ---> Using cache
 ---> 7fc06517d955
Step 3/5 : COPY 11-ymltest-0.0.1-SNAPSHOT.jar 11-ymltest-0.0.1-SNAPSHOT.jar
 ---> Using cache
 ---> 28c708480758
Step 4/5 : COPY application.yml application.yml
 ---> 8ed5d1b0474b
Step 5/5 : CMD ["java","-jar","11-ymltest-0.0.1-SNAPSHOT.jar"]
 ---> Running in 936c99ff0a8c
Removing intermediate container 936c99ff0a8c
 ---> b4a8fab8fee8
Successfully built b4a8fab8fee8
Successfully tagged java_java:latest
Creating java_java_1 ... done

结果:
在这里插入图片描述

3 结论

docker-compose.yml > ./application.yml > resoures/application.yml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速部署分布式应用。通过 Docker Compose,我们可以定义和运行多个 Docker 容器,并通过一个 YAML 文件配置需要的服务。 下面是使用 Docker Compose 部署 Spring Boot 项目的简单步骤: 1. 编写 Dockerfile 在 Spring Boot 项目的根目录下创建一个名为 Dockerfile 的文件,并添加以下内容: ``` FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE ADD ${JAR_FILE} app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ``` 2. 编写 docker-compose.yml 文件 在 Spring Boot 项目的根目录下创建一个名为 docker-compose.yml 的文件,并添加以下内容: ``` version: '3' services: app: image: your-image-name build: context: . dockerfile: Dockerfile ports: - "8080:8080" environment: - SPRING_PROFILES_ACTIVE=prod restart: always ``` 其中,your-image-name 是自定义的镜像名称,需要在构建镜像使用。 3. 构建镜像 在 Spring Boot 项目的根目录下执行以下命令,构建镜像: ``` docker build -t your-image-name . ``` 4. 启动容器 在 Spring Boot 项目的根目录下执行以下命令,启动容器: ``` docker-compose up -d ``` 5. 查看容器状态 执行以下命令查看容器状态: ``` docker-compose ps ``` 至此,你已经成功使用 Docker Compose 部署了 Spring Boot 项目。如果需要停止容器,可以执行以下命令: ``` docker-compose stop ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L-960

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值