How to implement Docker to dynamically pass parameters to Springboot projects

How to implement Docker to dynamically pass parameters to Springboot projects

background

Recently, some friends who are new to Docker asked me that they want to dynamically pass parameters to microservices through docker-compose.yml , instead of hard-coding them in the project configuration file every time, then building the service image, and finally packaging and publishing it through a series of processes to update the configuration. So, is it possible to directly put some configuration items into environment variables in docker-compose.yml , and then the springboot project automatically obtains parameters from the environment variables?

Scenario

Suppose there is a Springboot project with a database configuration item in it, but there are multiple database IPs in different database test environments (DEV\SIT\UAT). If you want to use the same Springboot project image, you can switch the database configuration at any time. In short, the database configuration of your Springboot application should be passed in externally instead of hardcoded.


There is a database configuration in the Springboot application as follows:

spring.datasource.url = jdbc:mysql://192.168.0.11:3306/db?useUnicode=true&characterEncoding=utf8
#Configure database username spring.datasource.username = sa
#Configure database password spring.datasource.password = sa

Solution

Use SpEL expressions to dynamically obtain database configuration from environment variables


Next, we replace the database configuration with a spEL expression in the Springboot configuration file

#Configure database link spring.datasource.url = jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}?useUnicode=true&characterEncoding=utf8
#Configure database username spring.datasource.username = ${DB_USER}
#Configure database password spring.datasource.password = ${DB_PASSWORD}

Configure our database parameters in docker-compose.yml

version: '3'
services:
 web:
  restart: always
  depends_on:
   -db
  image: springboot-app-image
  build: .
  ports:
   - 8080:8080
  environment:
   - DB_HOST=192.168.0.11
   - DB_PORT=3306
   - DB_USER=root
   - DB_PASSWORD=123456
   - DB_NAME=db
  networks:
   - credit-facility-net
  deploy:
   mode: replicated
   replicas: 3
   restart_policy:
    condition: on-failure
    delay: 5s
    max_attempts: 3
   update_config:
    parallelism: 1
    delay: 10s

In this way, our Springboot application can dynamically obtain the database configuration when starting the container service

This is the end of this article about how Docker dynamically passes parameters to Springboot projects. For more information about Docker Springboot dynamic parameter passing, please search for previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Implementation of spring boot front-end and back-end parameter transmission

<<:  Detailed explanation of MySQL data rows and row overflow mechanism

>>:  Four ways to modify the default CSS style of element-ui components in Vue

Recommend

Nginx configuration location matching rules example explanation

The scope of nginx configuration instructions can...

How to publish a locally built docker image to dockerhub

Today we will introduce how to publish the local ...

Summary of various forms of applying CSS styles in web pages

1. Inline style, placed in <body></body&g...

Vue implements the right slide-out layer animation

This article example shares the specific code of ...

How to delete special character file names or directories in Linux

Delete a file by its inode number First use ls -i...

Detailed installation tutorial of Mysql5.7.19 under Centos7

1. Download Download mysql-5.7.19-linux-glibc2.12...

CSS optimization skills self-practice experience

1. Use css sprites. The advantage is that the smal...

Docker Compose practice and summary

Docker Compose can realize the orchestration of D...

1 minute Vue implements right-click menu

Table of contents Rendering Install Code Implemen...

HTML form_PowerNode Java Academy

1. Form 1. The role of the form HTML forms are us...

Mysql Workbench query mysql database method

Mysql Workbench is an open source database client...

A brief discussion on the application of Html web page table structured markup

Before talking about the structural markup of web...

Implementation steps for docker deployment lnmp-wordpress

Table of contents 1. Experimental Environment 2. ...