es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La configuración de los puertos del contenedor Docker es incorrecta.

Tengo una aplicación simple que quiero “dockerizar”. Es una API simple que funciona correctamente cuando la ejecuto en mi máquina y es accesible en http://127.0.0.1:8000/
Este es el Dockerfile que creé:

FROM python:3.6-slim-stretch
WORKDIR /code
COPY requirements.txt /code
RUN pip install -r requirements.txt --no-cache-dir
COPY . /code
CMD ["uvicorn", "main:app", "--reload"]

Luego creo la imagen usando este comando sudo docker build -t test .

Y luego lo corro de esta manera sudo docker run -d -p 8000:8000 test

El problema es que no puedo acceder a él en http://127.0.0.1:8000/ aunque no conozco el problema.

PD: cuando reviso los puertos de mi contenedor, obtengo 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp

Quiero saber qué está causando este problema y cómo solucionarlo.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema probablemente se debe a que el contenedor está escuchando en su propia interfaz de red y no en la interfaz de red de la máquina anfitriona.

    Para solucionar esto, puede modificar la línea CMD en su archivo Dockerfile para incluir el argumento --host para Uvicorn, de la siguiente manera:

    CMD ["uvicorn", "main:app", "--reload", "--host", "0.0.0.0"]
    

    Esto hará que Uvicorn escuche en todas las interfaces de red disponibles, incluida la de la máquina anfitriona.

    Después de reconstruir y ejecutar el contenedor con el archivo Dockerfile modificado, debería poder acceder a la API en http://127.0.0.1:8000/.

Comments are closed.