- ## 直接使用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:}
- ## 使用
.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:}
- ## 使用
env_file
参考2. 的 .env 和 application.yml
services:
java-app:
image: my-java-app:latest
ports:
- "8080:8080"
env_file:
- .env
env_file与environment同时使用时,同名变量通常以environment为准。
- ## 直接覆盖 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中对应的配置。
- ## 直接挂载 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/
Top comments (0)