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

在AWS ECS Fargate部署FastAPI+PostgreSQL遇容器无日志退出问题

在AWS ECS Fargate部署FastAPI+PostgreSQL应用遇容器立即退出问题

我尝试通过Docker Compose在AWS ECS Fargate上部署FastAPI + PostgreSQL应用时,容器启动后立即停止,退出码为0(无错误),且CloudWatch未生成任何日志。

本地环境中,Docker化的FastAPI和PostgreSQL运行正常,但加载HuggingFace的ColPali模型需约8分钟才能启动API端点。我已配置ecsTaskExecutionRole策略、s3:GetObject权限及ECR访问权限,此前曾成功部署无额外依赖的简单FastAPI应用。

操作步骤:

  • 使用AWS CLI创建仓库、构建、标记并推送Docker镜像;
  • 创建默认配置的集群;
  • 创建任务定义,任务角色为ecsTaskExecutionRole,采用Linux/ARM64架构(Mac M2芯片),通过S3加载环境变量;
  • 在集群中以默认配置运行新任务。

目前已无调试思路,寻求帮助。


更新内容

任务定义JSON

{
    "taskDefinitionArn": "arn:aws:ecs:us-west-2:<>:task-definition/colpali-search:1",
    "containerDefinitions": [
        {
            "name": "colpali-search-api",
            "image": "<>.dkr.ecr.us-west-2.amazonaws.com/colpali-search:latest",
            "cpu": 0,
            "portMappings": [
                {
                    "name": "colpali-search-port",
                    "containerPort": 8000,
                    "hostPort": 8000,
                    "protocol": "tcp",
                    "appProtocol": "http"
                }
            ],
            "essential": true,
            "environment": [],
            "environmentFiles": [
                {
                    "value": "arn:aws:s3:::colpali-search-bucket/.env",
                    "type": "s3"
                }
            ],
            "mountPoints": [],
            "volumesFrom": [],
            "ulimits": [],
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-group": "/ecs/colpali-search",
                    "mode": "non-blocking",
                    "awslogs-create-group": "true",
                    "max-buffer-size": "25m",
                    "awslogs-region": "us-west-2",
                    "awslogs-stream-prefix": "ecs"
                },
                "secretOptions": []
            },
            "systemControls": []
        }
    ],
    "family": "colpali-search",
    "executionRoleArn": "arn:aws:iam::<>:role/ecsTaskExecutionRole",
    "networkMode": "awsvpc",
    "revision": 1,
    "volumes": [],
    "status": "ACTIVE",
    "requiresAttributes": [
        {
            "name": "com.amazonaws.ecs.capability.logging-driver.awslogs"
        },
        {
            "name": "ecs.capability.execution-role-awslogs"
        },
        {
            "name": "com.amazonaws.ecs.capability.ecr-auth"
        },
        {
            "name": "com.amazonaws.ecs.capability.docker-remote-api.1.19"
        },
        {
            "name": "com.amazonaws.ecs.capability.docker-remote-api.1.28"
        },
        {
            "name": "ecs.capability.env-files.s3"
        },
        {
            "name": "ecs.capability.execution-role-ecr-pull"
        },
        {
            "name": "com.amazonaws.ecs.capability.docker-remote-api.1.18"
        },
        {
            "name": "ecs.capability.task-eni"
        },
        {
            "name": "com.amazonaws.ecs.capability.docker-remote-api.1.29"
        }
    ],
    "placementConstraints": [],
    "compatibilities": [
        "EC2",
        "FARGATE"
    ],
    "requiresCompatibilities": [
        "FARGATE"
    ],
    "cpu": "1024",
    "memory": "3072",
    "runtimePlatform": {
        "cpuArchitecture": "ARM64",
        "operatingSystemFamily": "LINUX"
    },
    "registeredAt": "2024-12-03T18:09:53.720Z",
    "registeredBy": "",
    "tags": []
}

docker-compose.yml

services:
    fastapi:
        build: .
        container_name: colpali-search
        depends_on:
            db:
                condition: service_healthy
        networks:
            - app-network
        volumes:
            - ./:/code:ro
        env_file:
            - .env
        environment:
            - DATABASE_URL=${DATABASE_URL}
            - PYTHONPATH=/code
        ports:
            - '8000:8000'
        command: >
            sh -c "alembic upgrade head && fastapi run app.py --port 8000 --workers 4"

    db:
        image: pgvector/pgvector:pg17
        restart: always
        volumes:
            - postgres_data:/var/lib/postgresql/data/
            - ./init.sql:/docker-entrypoint-initdb.d/init.sql
        ports:
            - 5432:5432
        networks:
            - app-network
        env_file:
            - .env
        environment:
            - POSTGRES_USER=${POSTGRES_USER}
            - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
            - POSTGRES_DB=${POSTGRES_DB}
        entrypoint: sh -c "chmod 644 /docker-entrypoint-initdb.d/init.sql && docker-entrypoint.sh postgres"
        healthcheck:
            test:
                [
                    'CMD-SHELL',
                    'pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}',
                ]
            interval: 5s
            timeout: 5s
            retries: 5
networks:
    app-network:

volumes:
    postgres_data:

Dockerfile

FROM python:3.12-slim as base

RUN apt-get update && apt-get install -y poppler-utils && rm -rf /var/lib/apt/lists/*

ENV  POETRY_VERSION=1.6.1 \
    PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1 \
    PIP_NO_CACHE_DIR=off \
    PIP_DISABLE_PIP_VERSION_CHECK=on \
    PIP_DEFAULT_TIMEOUT=100 \
    POETRY_HOME="/opt/poetry" \
    POETRY_VIRTUALENVS_IN_PROJECT=true \
    POETRY_NO_INTERACTION=1 \
    PYSETUP_PATH="/opt/pysetup" \
    VENV_PATH="/opt/pysetup/.venv"
ENV PATH="$POETRY_HOME/bin:$VENV_PATH/bin:$PATH"


FROM base as builder
RUN --mount=type=cache,target=/root/.cache \
    pip install "poetry==$POETRY_VERSION"
WORKDIR $PYSETUP_PATH
COPY ./poetry.lock ./pyproject.toml ./
RUN --mount=type=cache,target=$POETRY_HOME/pypoetry/cache \
    poetry install --no-dev


FROM base as production
ENV FASTAPI_ENV=production
COPY --from=builder $VENV_PATH $VENV_PATH
COPY ./colpali_search /colpali_search
COPY .env /colpali_search/
COPY alembic.ini /colpali_search/
COPY alembic /colpali_search/alembic
WORKDIR /colpali_search
EXPOSE 8000

内容的提问来源于Stack Exchange,提问作者CuriousCat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 18:24:53