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 ...
随机推荐
- js上 十四、对象
十四.对象 #1.初识对象 什么是对象? 在js中,一切皆是对象. 对象,生活中可见和不可见的东西,在世界中,客观存在的都是一个对象. 桌子,笔记本,手机,人. 在日常生活中,我们是如何来描述这个对象 ...
- day112:MoFang:种植园使用websocket代替http&服务端基于flask-socketio提供服务&服务端响应信息&种植园页面显示初始化
目录 1.种植园使用websocket代替http 2.服务端基于socket提供服务 3.服务端响应信息 4.种植园页面展示 1.种植园使用websocket代替http 我们需要完成的种植园,是一 ...
- 七轮面试最终拿下阿里offer —— 十年经验之谈
前言 今年的大环境非常差,互联网企业裁员的现象比往年更严重了,可今年刚好是我的第一个"五年计划"截止的时间点,说什么也不能够耽搁了,所以早早准备的跳槽也在疫情好转之后开始进行了.但 ...
- XML外部实体注入
文章参考链接: 参考视频: https://www.bilibili.com/video/BV1tW411o7Fd?from=search&seid=13868972487110648015 ...
- Windows下python+allure的下载、安装、配置与使用
下载安装allure 1.Windows和mac均可选择从官网下载,下载地址: https://repo.maven.apache.org/maven2/io/qameta/allure/allure ...
- 悉数 Python 函数传参的语法糖
TIOBE排行榜是程序开发语言的流行使用程度的有效指标,对世界范围内开发语言的走势具有重要参考意义.随着数据挖掘.机器学习和人工智能相关概念的风行,Python一举收获2018年年度语言,这也是Pyt ...
- 一种简单的吉布斯采样modify中应用
这是主函数clc; clear all; close all; %% 生成初始序列 sequenceOfLength = 20; sequenceOfPop = 4; sequence = produ ...
- HttpApplication执行顺序
类的实例(Global继承自该类)是在 ASP.NET 基础结构中创建的,而不是由用户直接创建的.HttpApplication 类的一个实例在其生存期内被用于处理多个请求,但它一次只能处理一个请求. ...
- easyui模板页面 不良调查
<%@page import="com.xy.cc.util.CUtil" %><%@page import="com.xy.cc.bean.UserP ...
- Java学习日报7.22
//3.2 逆向输出三位整数! 7.22 package 三个和尚比身高1; import java.util.Scanner; public class Demo1{ @SuppressW ...