首页 > 解决方案 > AWS ECS 中的退出代码 1?

问题描述

我正在尝试将应用程序发布到 AWS Elastic Container Service(ECS)。我正在使用 ECS CLI 编写我的 docker-compose 文件。有 2 个 Docker 组件。一个 Web 容器(Flask 应用程序)和一个服务器容器(NGINX)。当只有 web 容器运行时一切正常,但是当我运行服务器时,我总是得到退出代码 1。

docker-compose.yaml

version: "3"

services:
    web:
        image: 131099/generateme
        expose:
            - 5000
        logging:
            driver: awslogs
            options: 
                awslogs-group: generateme
                awslogs-region: eu-west-2
                awslogs-stream-prefix: web
    server:
        image: 131099/generateme-server
        ports:
            - 80:80
        environment:
            - DOCKER_PROVIDER = ecs
            - DEBUG = true
        depends_on:
            - web
        logging:
            driver: awslogs
            options: 
                awslogs-group: generateme
                awslogs-region: eu-west-2
                awslogs-stream-prefix: server

Dockerfile 131099/generateme-server

FROM nginx

RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d

nginx.conf

upstream generateme {
    server web:5000;
}

server {

    listen 80;

    location / {
        proxy_pass http://generateme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

}

任何想法为什么退出代码是 1?我检查了日志,它说:

nginx: [emerg] host not found in upstream "web:5000" in /etc/nginx/conf.d/nginx.conf:2

depends_on由于该属性,Web容器不应该在服务器之前先启动吗?

标签: amazon-web-servicesdockernginxamazon-ecs

解决方案


看起来你忘记--enable-service-discoveryecs-cli.

逐步查看文档,但基本上当您启动服务时使用该标志。

ecs-cli compose --project-name generateme service up --private-dns-namespace generateme --vpc vpc-xxxxx --enable-service-discovery

推荐阅读