1. ## 直接使用environment
 services: java-app: image: my-java-app:latest ports: - "8080:8080" environment: SPRING_PROFILES_ACTIVE: prod SERVER_PORT: 8080 DB_HOST: mysql DB_PORT: 3306 DB_NAME: mydb DB_USERNAME: root DB_PASSWORD: "123456" 
 server: port: ${SERVER_PORT:8080} spring: profiles: active: ${SPRING_PROFILES_ACTIVE:dev} datasource: url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:test} username: ${DB_USERNAME:root} password: ${DB_PASSWORD:} 
  1. ## 使用.env文件

目录结构

 project/ ├── docker-compose.yml ├── .env ├── Dockerfile └── app.jar 
 APP_PORT=8080 DB_HOST=mysql DB_PORT=3306 DB_NAME=mydb DB_USERNAME=root DB_PASSWORD=123456 SPRING_PROFILE=prod 
 services: java-app: image: my-java-app:latest ports: - "${APP_PORT}:8080" environment: SPRING_PROFILES_ACTIVE: ${SPRING_PROFILE:-dev} DB_HOST: ${DB_HOST} DB_PORT: ${DB_PORT} DB_NAME: ${DB_NAME} DB_USERNAME: ${DB_USERNAME} DB_PASSWORD: ${DB_PASSWORD} 
 spring: datasource: url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:test} username: ${DB_USERNAME:root} password: ${DB_PASSWORD:} 
  1. ## 使用 env_file

参考2. 的 .env 和 application.yml

 services: java-app: image: my-java-app:latest ports: - "8080:8080" env_file: - .env 

env_file 与 environment 同时使用时,同名变量通常以 environment 为准。

  1. ## 直接覆盖 Spring Boot 配置项
 spring: datasource: url: jdbc:mysql://localhost:3306/test username: root password: root 
 services: java-app: image: my-java-app:latest environment: SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/prod SPRING_DATASOURCE_USERNAME: admin SPRING_DATASOURCE_PASSWORD: "123456" 

Spring Boot 会使用这些环境变量覆盖 application.yml 中对应的配置。

  1. ## 直接挂载 application.yml
 deploy/ ├── docker-compose.yml └── config/ ├── application-dev.yml └── application-prod.yml 
 services: java-app: image: my-java-app:latest ports: - "8080:8080" volumes: - ./config/application-prod.yml:/app/config/application.yml:ro environment: SPRING_CONFIG_ADDITIONAL_LOCATION: file:/app/config/