Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

277
Visualizações
La aplicación FastAPI se ejecuta localmente pero no en el contenedor Docker

Tengo una aplicación FastAPI que funciona como se esperaba cuando se ejecuta localmente; sin embargo, aparece un "Error interno del servidor" cuando intento ejecutarla en un contenedor Docker. Aquí está el código para mi aplicación:

 from fastapi import FastAPI from pydantic import BaseModel import pandas as pd from fbprophet import Prophet class Data(BaseModel): length: int ds: list y: list model: str changepoint: float = 0.5 daily: bool = False weekly: bool = False annual: bool = False upper: float = None lower: float = 0.0 national_holidays: str = None app = FastAPI() @app.post("/predict/") async def create_item(data: Data): # Create df from base model df = pd.DataFrame(list(zip(data.ds, data.y)), columns =['ds', 'y']) # Add the cap and floor to df for logistic model if data.model == "logistic": df['y'] = 10 - df['y'] df['cap'] = data.upper df['floor'] = data.lower # make basic prediction m = Prophet(growth=data.model, changepoint_prior_scale=data.changepoint, weekly_seasonality=data.weekly, daily_seasonality=data.daily, yearly_seasonality=data.annual ) # Add national holidays if data.national_holidays is not None: m.add_country_holidays(country_name=data.national_holidays) # Fit data frame m.fit(df) # Create data frame for future future = m.make_future_dataframe(periods=data.length) # Add the cap and floor to future for logistic model if data.model == "logistic": future['cap'] = 6 future['floor'] = 1.5 # forecast forecast = m.predict(future) # Print values print(list(forecast[['ds']].values)) # Return results # {'ds': forecast[['ds']], 'yhat': forecast[['yhat']], 'yhat_lower': forecast[['yhat_lower']], 'yhat_upper': forecast[['yhat_upper']] } return [forecast[['ds']], forecast[['yhat']], forecast[['yhat_lower']], forecast[['yhat_upper']]]

Que funciona localmente con uvicorn main:app , pero no cuando construyo usando este Dockerfile:

 FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7 COPY ./app /app RUN pip install -r requirements.txt

y empezar con

 docker run -d --name mycontainer -p 8000:80 myimage

Veo un Internal Server Error en Postman. ¿Hay algún problema con mi dockerfile o los comandos de docker? O bien, ¿cómo depuro esto?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Hay una serie de posibles problemas aquí.

  1. Cuando se ejecuta en un contenedor, debe decirle a Uvicorn que no se preocupe por la IP del host entrante con la opción --host 0.0.0.0

  2. No ha especificado el comando ejecutado cuando se ejecuta la imagen. Lo mejor es dejar esto claro en el archivo acoplable, por ejemplo CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

  3. Cuando ejecute la imagen, asegúrese de asignar los puertos correctamente. Por lo que ha dado, espera que el servicio en el contenedor escuche en el puerto 80, eso está bien, pero el valor predeterminado para uvicorn es 8000 (consulte el punto 2 para configurar explícitamente el puerto).

over 4 years ago · Santiago Trujillo Relatório

0

Ejecute la ventana acoplable sin el parámetro -d y obtendrá más pistas al respecto. Si tuviera que adivinar, podría decir que te falta algún requisito de Python.

over 4 years ago · Santiago Trujillo Relatório

0

Tuve el mismo problema porque --port 8000 en

 command: uvicorn main:app --host 0.0.0.0 --port 8000
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda