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

多数据源SpringBoot应用Docker化的docker-compose配置修改方法

PostgreSQL+MongoDB Atlas多数据源SpringBoot应用Docker Compose配置指引

核心修改逻辑

  • 你使用的MongoDB为Atlas云托管服务,不需要在docker-compose中新增MongoDB容器,默认Docker网络支持容器出网访问公网的Atlas服务,仅需提前将部署机器的公网IP加入Atlas的IP白名单即可。
  • 你的项目使用了自定义数据源前缀,而非SpringBoot默认的单数据源配置前缀,环境变量需要严格匹配本地application.properties的属性路径,绑定规则为:配置项的点分隔符替换为下划线、全大写。
  • PostgreSQL服务配置需要和你自定义的psql数据源的库名、账号密码对齐,不能直接套用单数据源教程里的默认库名参数。

修改后完整docker-compose.yml

version: '3.1'
services:
  API:
    build: . # 直接引用同目录下的Dockerfile构建镜像,也可以替换为你提前构建好的镜像名
    ports:
      - "8080:8080"
    depends_on:
      PostgreSQL:
        condition: service_healthy
    environment:
      # 对齐自定义PostgreSQL数据源配置
      - SPRING_DS_PSQL_DATASOURCE_JDBC_URL=jdbc:postgresql://PostgreSQL:5432/devicestatspsql
      - SPRING_DS_PSQL_DATASOURCE_USERNAME=替换为你的PostgreSQL账号
      - SPRING_DS_PSQL_DATASOURCE_PASSWORD=替换为你的PostgreSQL密码
      # 对齐MongoDB Atlas配置
      - SPRING_DATA_MONGODB_USERS_MONGO_ATLAS_URI=替换为你的MongoDB Atlas完整连接串
      # JPA通用配置
      - SPRING_JPA_GENERATE_DDL=true
      - SPRING_JPA_SHOW_SQL=true
    restart: unless-stopped

  PostgreSQL:
    image: postgres:15-alpine # 建议指定固定版本,避免默认拉取latest出现版本兼容问题
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_PASSWORD=和上方API配置的PostgreSQL密码保持一致
      - POSTGRES_USER=和上方API配置的PostgreSQL账号保持一致
      - POSTGRES_DB=devicestatspsql # 和你本地配置的数据库名一致
    volumes:
      - psql_data:/var/lib/postgresql/data # 持久化数据库数据,避免容器重启数据丢失
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U 替换为你的PostgreSQL账号 -d devicestatspsql"]
      interval: 10s
      timeout: 5s
      retries: 5
    restart: unless-stopped

volumes:
  psql_data:

配套Dockerfile参考

多数据源场景下SpringBoot应用的镜像构建逻辑和单数据源完全一致,不需要做特殊修改,同目录下新增Dockerfile即可:

# 按需选择和你本地一致的JDK版本
FROM eclipse-temurin:17-jre-alpine
WORKDIR /app
# 提前执行mvn clean package将jar包生成在target目录
COPY target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

注意事项

  • 如果后续需要将MongoDB从Atlas切换为容器化自部署,仅需在services下新增MongoDB服务,将API中配置的MongoDB连接串地址改为对应MongoDB服务名即可,其他逻辑无需调整。
  • 如果启动后出现MongoDB连接失败,优先检查Atlas白名单配置、连接串是否包含正确的账号密码、容器所在网络是否限制公网出方向访问。
  • 环境变量中的自定义前缀ds-psql在转环境变量时需要去掉横杠写成DS_PSQL,避免SpringBoot绑定失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:15:45