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

使用docker-compose在AWS ECS Fargate部署Xray边车容器出现多任务异常

问题根因

当使用Docker Compose向AWS ECS Fargate部署服务时,默认转换逻辑会将docker-compose.yml中每个顶级services下的服务识别为独立的ECS服务,各自生成独立的任务定义、调度独立的运行任务,因此会出现web业务服务和Xray守护进程分别运行在两个独立任务的情况。你之前使用CFN部署时是手动将两个容器定义配置在同一个任务定义中,因此符合边车部署的预期。

修复方案

在Xray服务的配置中添加ECS专属的边车声明标签,指定该服务为web服务的边车,不需要独立创建ECS服务。修改后的配置参考如下:

version: "3.9"

services:
  web: 
    image: link-to-private-repo/web
    ports: ["80:80"]
  xray:
    image: amazon/aws-xray-daemon
    # 声明当前服务为web的边车,会和web放到同一个任务定义中
    x-aws-sidecar-for: web
    # Fargate同任务内容器共享网络栈,无需对外暴露端口,仅保留同任务内的端口访问即可
    expose:
      - "2000/udp"
补充说明
  • 同一个Fargate任务内的容器共享网络命名空间,web服务可以直接通过127.0.0.1:2000/udp向Xray守护进程上报数据,无需额外配置服务发现
  • 修改配置后重新执行部署命令,ECS会自动将两个容器合并到同一个任务定义中,调度时也会同时启动两个容器在同一个Fargate实例上

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:30:03