Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problema para subir a aplicação no curso Infraestrutura como código: Terraform, Docker e Elastic Container Service

Olá amigos, boa tarde, eu to tendo um problema pra subir a aplicação que foi utilizada no curso mencionado.

Após todas as configurações estarem corretamente definidas no projeto terraform para realização do provisionamento da infraestrutura, eu aparentemente tive um problema com o mapeamento de portas porque eu recebi a seguite excessão:

InvalidParameterException: The container production did not have a container port 8000 defined.

Vou fornecer meu dockerfile porque eu realmente nem imagino onde posso ter errado.

FROM python:3.9
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

WORKDIR /home/ubuntu/tcc/
COPY . /home/ubuntu/tcc/
RUN pip install --upgrade pip setuptools wheel && pip install -r requirements.txt

RUN sed -i "s/ALLOWED_HOSTS = \[\]/ALLOWED_HOSTS = \['*'\]/" setup/settings.py
RUN python manage.py migrate
RUN python manage.py loaddata clientes.json
EXPOSE 8000
ENTRYPOINT ["python", "manage.py", "runserver", "0.0.0.0:8000"]

vou fornecer tambem o meu arquivo referente ao ecs no terraform:

module "ecs" {
  source = "terraform-aws-modules/ecs/aws"
  
  cluster_name = var.environment
  cluster_settings = [
    {
      "name" : "containerInsights",
      "value" : "enabled"
    }
  ]
  default_capacity_provider_use_fargate = true
  fargate_capacity_providers = {
    FARGATE = {
      default_capacity_provider_strategy ={
        weight = 1
      }
    }
  }
}

resource "aws_ecs_task_definition" "django_api" {
  family                   = "Django-API"
  requires_compatibilities = ["FARGATE"]
  network_mode             = "awsvpc"
  cpu                      = 256
  memory                   = 512
  execution_role_arn = aws_iam_role.role.arn
  container_definitions    = jsonencode(
    [
      {
        "name" = "production"
        "image" = "537124935228.dkr.ecr.us-east-1.amazonaws.com/production:1.0"
        "cpu" = 256
        "memory" = 512
        "essential" = true
        "portMapping" = [
          {
            "containerPort" = 8000
            "hostPort" = 8000
          }
        ]
      }
    ]
  )
}

resource "aws_ecs_service" "django_api" {
  name            = "Django-API"
  cluster         = module.ecs.cluster_id
  task_definition = aws_ecs_task_definition.django_api.arn
  desired_count   = 3

  load_balancer {
    target_group_arn = aws_lb_target_group.target_group.arn
    container_name   = "production"
    container_port   = 8000
  }

  network_configuration {
    subnets = module.vpc.private_subnets
    security_groups = [ aws_security_group.private_net.id ]
  }

  capacity_provider_strategy {
    capacity_provider = "FARGATE"
    weight = 1
  }
}

Conto com a colaboração de vcs e desde já agradeço ao time e comunidade !

1 resposta
solução!

escrevi o parâmetro portMappings errado hahahaha, agora foi