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

如何在同一docker-compose文件中部署两个现有容器

双容器统一部署实现方案

你只需要将现有独立运行的SQL Server容器配置合并到微服务项目的docker-compose文件中,就能达到和双服务同文件配置完全一致的运行效果,具体操作步骤如下:

  • 前置准备:备份现有DB容器中的业务数据,之后停止并移除手动创建的独立DB容器,避免端口、网络冲突

    docker stop <你当前运行的DB容器名称>
    docker rm <你当前运行的DB容器名称>
    

    如果你之前给DB容器配置了持久化数据卷,不需要删除原有数据卷,后续可以直接复用。

  • 修改微服务项目下的docker-compose.yml,在services节点下新增SQL Server服务配置,和原有微服务配置做关联,参考可直接运行的配置模板:

    version: '3.8'
    services:
      # 保留你原有微服务的所有配置,仅做关联调整
      your-microservice:
        build: .
        ports:
          - "8080:80"
          - "8081:443"
        depends_on:
          mssql:
            condition: service_healthy
        environment:
          # 关键:数据库地址不要写localhost/127.0.0.1,直接用服务名mssql,compose内部会自动做DNS解析
          - ConnectionStrings__Default=Server=mssql;Database=你的业务库名;User Id=sa;Password=YourStrong!Passw0rd;TrustServerCertificate=True;
        networks:
          - app-network
    
      # 新增SQL Server服务配置,和你之前手动创建容器的参数保持一致即可
      mssql:
        image: mcr.microsoft.com/mssql/server:2022-latest
        # 如果不需要从容器外直接连接数据库,可以删除1433端口映射,提升安全性
        ports:
          - "1433:1433"
        environment:
          - ACCEPT_EULA=Y
          - SA_PASSWORD=YourStrong!Passw0rd # 必须符合SQL Server密码复杂度要求:8位以上、包含大小写字母+数字+特殊符号
          - MSSQL_PID=Developer
        volumes:
          # 复用旧数据卷就填你之前创建的卷名,新部署直接写自定义卷名即可
          - mssql-data:/var/opt/mssql
        networks:
          - app-network
        restart: unless-stopped
        # 健康检查配置,避免微服务在DB未完成初始化时启动导致连接失败
        healthcheck:
          test: /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P YourStrong!Passw0rd -Q "SELECT 1"
          interval: 10s
          timeout: 3s
          retries: 10
    
    # 声明持久化卷和内部网络
    volumes:
      mssql-data:
    networks:
      app-network:
        driver: bridge
    
  • 配置完成后,在docker-compose.yml所在目录执行启动命令即可完成统一部署:

    docker-compose up -d
    
  • 部署验证:执行docker-compose ps查看服务状态,当两个服务状态均显示为Up时,测试微服务接口的数据库读写功能,正常即部署完成。

常见踩坑提示:如果微服务侧没有配置数据库连接重试策略,不要删除健康检查相关配置,否则大概率会出现微服务启动时数据库还未初始化完成、连接报错的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:36:26