Docker 如何动态给SpringBoot项目传参
关于SpringBoot配置数据源
在项目开发中,我们往往需要配置多套不同的配置环境例如:本地开发、测试环境、部署环境。每一个环境的数据源配置可能都不同,因此需要写不同的数据源配置。如果用Dockerfile部署在Docker容器中,我们不知道这个项目将来会部署在哪一台服务器上,DataSource中的url、username、password参数,我们都不清楚的时候。可能就没有办法通过默认的application.yml来进行配置数据源。
如何通过Docker给SpringBoot项目动态传参
我们都知道SpringBoot可以通过Java -jar *.jar --spring.active=dev 来切换不同的数据源配置,但我不知道怎么通过这种格式去修改application-dev.yml中的url、username、password。于是我就把DataSource写在了application.yml里
server:
port: 8080
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username:
password:
url:
图中的DataSource配置参数都是空的,然后我们编写Dockerfile文件
FROM ubuntu:2.0
ADD ./bbs.tar.gz /usr/bbs/
WORKDIR /usr/bbs
#设置变量
ENV username=""
ENV password=""
ENV url=""
#公开端口
EXPOSE 8080
#设置启动命令
ENTRYPOINT ["sh","-c","java -jar pybbs.jar --spring.datasource.username=$username --spring.datasource.url=$url --spring.datasource.password=$password"]
在Dockerfile中,我们设置了3个ENV变量用来给DataSource赋值
在Docker中我们生成镜像用
docker build -t 镜像名 .
最后启动容器
docker run -d -e username="数据源用户名" -e url="数据库地址" -e password="数据库密码" -p 8080:8080 镜像名
注意!
docker run -e 环境变量必须在-p之前,多个环境变量就需要多个-e,否则参数传不进去就会报错,这里是一个坑。通过这个步骤我们就可以在docker run的时候动态传数据源参数进去就不需要写在application.yml里
第一次写博客,如果对你们有帮助欢迎点赞啦,谢谢大家!
Docker 如何动态给SpringBoot项目传参的更多相关文章
- springboot对传参的拦截统一处理
在学习某网<java秒杀系统方案优化>的课程中,学到了一种springboot对传参的拦截统一处理的方式,特记录一下. 如后台方法一般需要根据token从Session中获取User对象, ...
- docker 中部署一个springBoot项目
docker 中部署一个springBoot项目 (1)介绍 springBoot项目 1.项目结构 2.pom.xml <?xml version="1.0" encodi ...
- 【Docker】Maven打包SpringBoot项目成Docker镜像并上传到Harbor仓库(Eclipse、STS、IDEA、Maven通用)
写在前面 最近,在研究如何使用Maven将SpringBoot项目打包成Docker镜像并发布到Harbor仓库,网上翻阅了很多博客和资料,发现大部分都是在复制粘贴别人的东西,没有经过实践的检验,根本 ...
- sqlmap动态sql优化,避免传参失误批量修改和删除操作!
分析以下的sqlmap存在问题: <delete id="deletePartspic" parameterClass="TblSpPartspic"&g ...
- docker 中打包部署Springboot项目
1.安装jdk yum -y install java-1.8.0-openjdk* 2.安装并启动mysql mysql高版本驱动变了,最后还是安装5.6 docker pull mysql:5.6 ...
- docker入门篇 部署springboot项目
安装docker Ubuntu16.04安装Docker 使用docker 注册docker服务 systemctl enable docker systemctl status docker 然后在 ...
- springboot前端传参date类型后台处理方式
转载:https://blog.csdn.net/xiangluer/article/details/81913137?utm_source=copy 参考如下博客: https://www.jian ...
- SpringBoot枚举传参
创建一个接口所有枚举继承 package com.gecko.charging.common; public interface BaseEnum { Integer getCode(); } 具体的 ...
- springboot controller传参,对象映射
Post请求,对象映射时,在参数 加 @RequestBody: 传入对象内字段的json才能映射 {"legendData": [100,90,80,70,60,50,40,30 ...
随机推荐
- [日常摸鱼]bzoj2875[NOI2012]随机数生成器-矩阵快速幂
好裸的矩阵快速幂-然而我一开始居然构造不出矩阵- 平常两个的情况都是拿相邻两项放在矩阵里拿去递推的-然后我就一直构造不出来-其实把矩阵下面弄成1就好了啊orz #include<cstdio&g ...
- Web服务器-并发服务器-多进程(3.4.1)
@ 目录 1.优化分析 2.代码 3. 关于作者 1.优化分析 在单进程的时候,相当于 是来一个客户,派一个人去服务一下 效率低,现在使用多进程来服务 假设场景 100个人同时访问页面 单进程:一次处 ...
- Python 刷题笔记
Python 刷题笔记 本文记录了我在使用python刷题的时候遇到的知识点. 目录 Python 刷题笔记 选择.填空题 基本输入输出 sys.stdin 与input 运行脚本时传入参数 Pyth ...
- 【Windows系统常用命令集合】
查看建立的TCP连接:netstat -n 查看建立的TCP连接的进程:netstat -nb 查看本机侦听的端口: netstat -an (说明:如果端口没有侦听 检查服务) 测试到远程计算机的某 ...
- IDEA 远程debug
远程debug tomcat 的Catalina.sh 里面有个参数 JPDA_ADDRESS="5555",默认为5555.启动tomcat时,用 ./catalina.sh j ...
- QPushButton
QPushButton 什么是QPushButton? 构造函数 常用属性和方法 QPushButton 什么是QPushButton? QPushButton是一个按键类. class Q_GUI_ ...
- LINUX五中IO模型
阻塞IO模型 用户空间调用recvfrom命令 直到数据包到达且被复制到应用进程的缓冲区或发生错误时才返回,这个过程中 进程亦或线程一直处于等待阻塞状态. 2.非阻塞IO模型 用户空间调用内核指令re ...
- JVM个人总结一
看了深入理解JAVA虚拟机已经有一段时间了 发现很多东西如果不总结 脑子里总是没有一条线贯穿起来,也比较模糊混乱,所以还是有必要利用逻辑思维图总结下. JVM看了下 大致比较重要的分内存区域划分 ...
- 【Linux】中默认文本编辑器 vim 的入门与进阶
Linux 基本操作 vim 篇 vim 简介 vim 是 Linux 上最基本的文本编辑工具,其地位像是 Windows 自带的记事本工具,还要少数的 Linux 系统自带 leafpad 编辑器, ...
- tep0.6.0更新聊聊pytest变量接口用例3个级别复用
tep是一款测试工具,在pytest测试框架基础上集成了第三方包,提供项目脚手架,帮助以写Python代码方式,快速实现自动化项目落地.fixture是pytest核心技术,本文聊聊如何使用fixtu ...