You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker Compose中使用不同配置运行Spring Boot Docker镜像

解决方案

方案1:挂载外部配置文件(最贴合你现有部署习惯,推荐)

Spring Boot默认会优先读取工作目录下/config子目录中的配置文件,优先级高于jar包内置的配置。而Spring Boot官方buildpack构建的镜像默认工作目录为/workspace,你只需要将不同环境的配置文件按环境存放,通过Docker Compose挂载到容器内对应路径即可:

步骤

  1. 调整你的部署目录结构,按环境分类存放配置:
deploy-root/
├── dev/ # 开发环境配置
│   ├── config-service/
│   │   └── application.yml
│   ├── discovery-service/
│   │   └── bootstrap.yml
│   ├── gateway-service/
│   │   └── bootstrap.yml
│   └── crm-service/
│       └── bootstrap.yml
├── prod/ # 生产环境配置
│   ├── config-service/
│   │   └── application.yml
│   ├── discovery-service/
│   │   └── bootstrap.yml
│   ├── gateway-service/
│   │   └── bootstrap.yml
│   └── crm-service/
│       └── bootstrap.yml
└── docker-compose.yml
  1. 编写docker-compose.yml配置,用变量指定环境目录:
version: '3.8'
services:
  config-service:
    image: 你构建的config-service镜像名:版本号
    volumes:
      - ./${ENV}/config-service:/workspace/config
    ports:
      - "8888:8888"
  discovery-service:
    image: 你构建的discovery-service镜像名:版本号
    volumes:
      - ./${ENV}/discovery-service:/workspace/config
    ports:
      - "8761:8761"
    depends_on:
      - config-service
  # 其他服务按相同规则配置即可
  1. 启动时指定环境变量即可加载对应配置:
  • 开发环境启动:ENV=dev docker compose up -d
  • 生产环境启动:ENV=prod docker compose up -d
    这个方案不需要修改镜像,配置修改后直接重启容器即可生效,无需重新构建镜像。

方案2:使用Spring Profile + 环境变量

如果你的配置项较少,且可以提前内置到jar包中,可以把不同环境的配置按profile命名(比如application-dev.yml、application-prod.yml、bootstrap-dev.yml)打到jar包内,启动时指定激活的profile即可:
docker-compose.yml配置示例:

services:
  discovery-service:
    image: 你构建的discovery-service镜像名:版本号
    environment:
      - SPRING_PROFILES_ACTIVE=${ENV}

启动命令和方案1一致,Spring会自动加载对应profile的配置文件。

方案3:配置中心统一管理(微服务架构推荐)

你本身已经搭建了配置中心服务,可以把所有业务服务的配置都集中存放在配置中心,不同环境的配置可以通过配置中心的目录分层、版本分支或者profile标签区分,服务启动时只需要传入配置中心地址和激活的环境profile,不需要本地挂载配置文件,更适合多环境、多服务的统一配置管理。

注意事项

buildpack构建的Spring Boot镜像默认工作目录为/workspace,不要误挂载到其他目录,否则配置不会生效。如果需要验证配置是否正确,可以通过docker exec 容器ID cat /workspace/config/对应的配置文件名查看挂载的配置内容。

内容的提问来源于stack exchange,提问作者Herval NGANYA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 06:09:02