Spring Boot Environment Variable Issues on Cloud — Causes & Fixes
When a Spring Boot application works perfectly on local machine but fails on Azure / AWS / Docker / Kubernetes, the problem is often not the code.
It is environment variables.
In cloud deployments, 70% of production startup failures come from:
wrong variable name
wrong casing
missing secret
incorrect property mapping
This guide explains real production errors and how to fix them.
1) Application Fails to Start – Property Not Found
Typical Error
Could not resolve placeholder 'DB_HOST'
Failed to bind properties under spring.datasource.url
Your application.yml:
spring:
datasource:
url: jdbc:postgresql://${DB_HOST}:5432/app
Cloud variable:
db_host=localhost
Linux is case-sensitive → ❌ mismatch
Fix
Always use uppercase with underscore
DB_HOST=localhost
Best Practice
Spring Boot converts:
| Property | Environment |
|---|---|
| spring.datasource.url | SPRING_DATASOURCE_URL |
2) Application Starts But Connects to Wrong Database
Very common in Docker & Kubernetes.
You defined:
SPRING_DATASOURCE_URL
But container overrides:
SPRING_DATASOURCE_URL_FILE
Spring Boot prioritizes secrets mounted as files → wrong DB used.
Fix
Disable file binding or remove duplicate variables.
3) Boolean Variables Not Working
FEATURE_ENABLED=true
Code:
@Value("${feature.enabled}")
private boolean enabled;
Fails because Spring expects:
FEATURE_ENABLED
maps to
feature.enabled
But sometimes cloud sends "true " (space)
Result → always false ❌
Fix
Use configuration properties instead of @Value
@ConfigurationProperties(prefix="feature")
public class FeatureConfig {
private boolean enabled;
}
4) Variables Work Locally But Not on Cloud
Local:
export DB_PASSWORD=pass123
Azure:
Stored in portal but app still fails.
Reason → Restart not triggered.
Fix
Always restart:
Azure App Service → Restart
Kubernetes → rollout restart
Docker → recreate container
5) Special Characters Breaking Connection
Passwords like:
P@ss#123!
Break JDBC URL:
jdbc:mysql://user:P@ss#123!@host/db
Fix
Encode password:
P%40ss%23123%21
6) Profile Not Loading
SPRING_PROFILES_ACTIVE=prod
But config file:
application-PROD.yml
Linux is case sensitive → profile ignored
Production Prevention Checklist
Before deployment verify:
Variable names uppercase
No trailing spaces
Restart after change
Secrets encoded
Profiles lowercase
No duplicate variables
Architecture Recommendation
Never rely only on environment variables in enterprise systems.
Preferred order:
Env Variables
↓
Secret Manager
↓
Config Server
↓
Fallback Defaults
📚 Recommended Reading (From This Blog)
Continue learning production troubleshooting:
👉 https://shikhanirankari.blogspot.com/search/label/English
Especially useful articles:
These issues often occur together with configuration problems in cloud deployments.
Final Advice
If it works locally but fails in cloud — check configuration before code.
Most Spring Boot production incidents are configuration failures, not programming errors.
Fix configuration discipline → eliminate majority of outages.
💼 Professional Support Available
If you are facing issues in real projects related to enterprise backend development or workflow automation, I provide paid consulting, production debugging, project support, and focused trainings.
Technologies covered include Java, Spring Boot, PL/SQL, CMS, Azure, and workflow automation (jBPM, Camunda BPM, RHPAM, Flowable).
📧 Contact: ishikhanirankari@gmail.com | info@realtechnologiesindia.com
🌐 Website: IT Trainings | Digital metal podium
Comments
Post a Comment