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

MATLAB微服务Docker Compose内部网络访问异常求助

问题分析与解决方案

核心矛盾:MATLAB微服务外部端口访问正常,但Docker内部网络访问出现403/404,说明服务的权限配置或路由规则在内部网络场景下存在差异,以下是针对性解决步骤:

1. 调整MATLAB微服务的权限配置

内部访问9910/api/health返回403,是因为MATLAB微服务默认限制了非外部请求的来源,需修改权限规则:

  • 找到容器内的server_config.json(通常位于/matlab/service/config目录),添加Docker内部网络的子网到allowedIPs或allowedOrigins字段,示例配置:
    {
      "allowedIPs": ["0.0.0.0/0", "172.18.0.0/16"],
      "allowedOrigins": ["*"]
    }
    
    注:172.18.0.0/16是Docker Compose默认自定义网络的子网,可根据实际网络调整
  • 若使用MATLAB Compiler SDK构建镜像,可在构建阶段通过自定义配置文件指定权限:
    mcc -W 'MATLAB:convertData' -d ./service -C -U -N -p ./functions --server-config ./custom_config.json
    
  • 部分MATLAB服务版本支持通过环境变量直接设置,在Docker Compose的MATLAB服务中添加:
    environment:
      - MATLAB_SERVER_ALLOWED_IPS=0.0.0.0/0
    

2. 检查Docker Compose网络配置

确保Web服务与MATLAB服务处于同一自定义网络,避免默认bridge网络的隔离限制:

version: '3.8'
networks:
  matlab-web-net:
    driver: bridge

services:
  mlsl:
    image: your-matlab-service-image
    ports:
      - "9900:9910"
    networks:
      - matlab-web-net

  web-app:
    image: your-web-app-image
    networks:
      - matlab-web-net
    depends_on:
      - mlsl

3. 验证内部访问的端点路径

外部访问convertData正常,但内部访问/functionarchive/convertData返回404,大概率是内部路由前缀不同:

  • 在Web容器内执行curl http://mlsl:9910/convertData,尝试不带/functionarchive前缀访问
  • 查看MATLAB服务的启动日志,确认服务注册的实际端点路径

结论

Docker内部网络完全可以访问MATLAB微服务,只需调整MATLAB服务的权限配置(允许内部IP/Origin)、确保服务处于同一自定义网络,并验证内部访问的端点路径即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:42:34