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 ...
随机推荐
- Spark性能调优篇二之重构RDD架构及RDD持久化
如果一个RDD在两个地方用到,就持久化他.不然第二次用到他时,会再次计算. 直接调用cache()或者presist()方法对指定的RDD进行缓存(持久化)操作,同时在方法中指定缓存的策略. 原文:h ...
- 你真的了解Python自动化吗?这篇文章可以让你了解90%
人们为什么使用Python? 之所以选择Python的主要因素有以下几个方面: 软件质量:在很大程度上,Python更注重可读性.一致性和软件质量,从而与脚本语言世界中的其他工具区别开发.此外,Pyt ...
- 附029.Kubernetes安全之网络策略
目录 环境构建 基础环境构建 网络测试 安全策略 策略配置 策略测试 ingress方向测试 egress方向测试 to和from行为 默认策略 环境构建 基础环境构建 [root@master01 ...
- python 简单逻辑回归实例
import sys reload(sys) sys.setdefaultencoding('utf-8') from sklearn.feature_extraction.text import T ...
- win10开启运行下显示历史操作记录
步骤 设置,隐私,常规,允许windows跟踪应用启动,以改进开始和搜索结果
- 【Windows系统常用命令集合】
查看建立的TCP连接:netstat -n 查看建立的TCP连接的进程:netstat -nb 查看本机侦听的端口: netstat -an (说明:如果端口没有侦听 检查服务) 测试到远程计算机的某 ...
- Cannot assign requested address 和 SO_REUSEADDR 参数
1. 错误 今天项目中出现了大量的java.net.ConnectException: Cannot assign requested address (connect failed) 错误. 刚开始 ...
- Node.js躬行记(5)——定时任务的调试
最近做一个活动,需要用到定时任务,于是使用了 node-schedule 库. 用法很简单,就是可配置开始.结束时间,以及重复执行的时间点,如下所示,从2020-12-23T09:00:00Z开始,每 ...
- 简单的xml数据库设计
我的需求 有时候系统需要存储一些简单的关系型属性,不考虑并发,不考虑性能(一次操作在几ms),数据库没有其他依赖引用,拿过来就可以用 为什么选xml作为数据库? 可读性好 实体的对应关系不严格 , 二 ...
- mysql源码分析-启动过程
mysql源码分析-启动过程 概要 # sql/mysqld.cc, 不包含psi的初始化过程 mysqld_main: // 加载my.cnf和my.cnf.d,还有命令行参数 if (load_d ...