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

在Digital Ocean App Platform部署Docker+MongoDB时遇服务器选择超时问题

问题

从Docker Hub向Digital Ocean App Platform部署应用时,遇到MongoDB连接问题,控制台报错:

server selection error: server selection timeout, current topology: { Type: Unknown, Servers: [{ Addr: mongo:27017, Type: Unknown, Last error: dial tcp: lookup mongo on 10.245.0.11:53: no such host }, ] } 

我的docker-compose.yml配置:

version: '3.8'

services:
  app:
    build: .
    container_name: app
    ports:
      - "8080:8080"
    depends_on:
      - mongo
    environment:
      MONGO_URL: "mongodb://****:****@mongo:27017/db?authSource=admin&directConnection=true" 
    volumes:
      - ./data/db:/data/db
    command: ["./app"]
    networks:
      - app-network

  mongo:
    image: mongo:6.0
    restart: always
    container_name: mongodb
    environment:
      MONGO_INITDB_ROOT_USERNAME: *****
      MONGO_INITDB_ROOT_PASSWORD: *****
    ports:
      - "27017:27017"
    volumes:
      - /mnt/data/mongo_db_data:/data/db
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

Go代码连接逻辑:

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()

mongoURL := os.Getenv("MONGO_URL")

clientMongo, err := mongo.Connect(ctx, options.Client().ApplyURI(mongoURL))
if err != nil {
    panic(err)
}

原本期望应用成功连接MongoDB,但抛出服务器选择超时错误。已尝试在连接字符串添加directConnection=true,也确认容器在同一Docker网络,请问问题原因是什么?

可能的原因及解决方案
  • Digital Ocean App Platform网络模型不兼容本地Docker Compose:本地配置的bridge自定义网络在DO平台中不会生效,平台有自己的服务发现机制,不是靠Docker网络实现。你定义的app-network在DO部署时不会被创建,导致mongo主机名无法被解析。
  • depends_on仅保证启动顺序,不保证服务就绪:depends_on只是让应用容器在MongoDB容器之后启动,但MongoDB启动后还需要完成初始化(比如创建管理员用户、加载服务),此时应用尝试连接会超时。需要在代码中添加连接重试逻辑,或者给MongoDB服务配置健康检查,让应用等待MongoDB完全就绪后再启动。
  • 连接字符串主机名不符合DO平台规则:如果MongoDB是DO平台内的独立服务,需要使用平台分配的服务域名代替mongo;如果使用的是DO托管MongoDB(Managed MongoDB),必须替换成托管服务提供的官方连接URI,不能指向容器服务名。
  • 卷挂载路径不兼容DO平台:本地的./data/db和/mnt/data/mongo_db_data这类挂载路径不符合DO App Platform的卷挂载规则,可能导致MongoDB无法初始化数据目录,进而服务启动失败,无法建立连接。

内容的提问来源于stack exchange,提问作者Gustavo Fernando Quintana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 20:11:00