Spring Boot Maven 项目打包至Docker容器中,如何将application.properties映射到宿主机中

问题分析

问题点

将jar包打包到容器中,按网上的教程直接将docker的/application.properties映射到宿主机对应的配置文件,无法成功映射;

整体思路

先查看docker容器的目录结构,application.properties文件并未在容器的根目录下,按docker运行时的文件映射关系,将application.properties文件放到根目录下,然后在运行jar包时,指定该配置文件。具体解决方案如下:

解决方案

Dockerfile文件

FROM openjdk:8-alpine
#将打包之后的可执行jar包copy到根目录下;
COPY ./target/xxx.jar /app.jar
#将配置文件copy到根目录下,便于后期映射;
COPY ./target/classes/application.properties /application.properties
ENV LD_LIBRARY_PATH /usr/lib
#--spring.config.location=/application.properties指定配置文件启动,这样将该文件与宿主机配置文件映射
CMD ["java", 
### Spring Boot Docker 部署并挂载 `application-dev.yml` 和 `application.properties` 为了实现Spring Boot应用的Docker化部署,并正确挂载外部配置文件,可以遵循以下方法: #### 准备工作 确保已经安装好JDK和Maven环境。可以通过解压方式快速完成安装[^1]。 ```bash tar -zxvf jdk-8*.tar.gz -C /usr/local/ tar -zxvf apache-maven-*.tar.gz -C /usr/local/ cd /usr/local && mv apache-maven*/ maven && mv jdk1.8*/ jdk ``` 编辑 Maven 的全局设置文件 `/usr/local/maven/conf/settings.xml` 来指定本地仓库路径和其他必要的参数。 #### 构建Spring Boot应用程序镜像 创建一个名为 `Dockerfile` 文件用于定义构建过程: ```dockerfile FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-Dspring.profiles.active=dev","-jar","/app.jar"] ``` 此命令指定了启动时激活开发模式(`dev`)下的特定配置文件。 #### 创建Docker Compose文件来管理服务依赖关系和服务本身 编写 `docker-compose.yml` 文件以便更方便地管理和运行容器组合: ```yaml version: '3' services: springboot-app: build: . ports: - "8080:8080" environment: SPRING_PROFILES_ACTIVE: dev volumes: - ./config/application-dev.yml:/app/config/application-dev.yml - ./config/application.properties:/app/config/application.properties ``` 这里假设所有的配置文件都存放在主机上的 `./config` 目录下;并且这些文件会被映射容器内的相应位置。 当更新位于宿主机中的配置文件(如 `application-dev.yml` 或者 `application.properties`),由于采用了卷的方式进行挂载,则无需重启Pod即可生效新修改的内容[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值