Frasco Dockerizado: restablecimiento de la conexión por parte de un par


9

Intentar conectarse a una aplicación de Frasco acoplado falla con el error 104, 'Restablecer conexión por igual' usando este ejemplo mínimo:

app.py:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

Dockerfile:

FROM python:alpine
RUN pip install flask
COPY . /src/
EXPOSE 5000
ENTRYPOINT ["python", "/src/app.py"]

docker-compose.yml:


test:
    build: .
    ports:
        - 127.0.0.1:5000:5000

La aplicación Flask parece funcionar como se esperaba:

$ docker logs test 
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Intentar conectarse desde afuera falla:

$ http http://127.0.0.1:5000/
http: error: ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer')) while doing GET request to URL: http://127.0.0.1:5000/

Alguna idea, ¿por qué no puedo ver "Hello World!" ¿aquí?

Respuestas:


12

Intentar conectarse desde afuera falla

¿Realmente te estás conectando desde afuera ? Flask está vinculado a localhost (127.0.0.1) y solo será accesible desde el contenedor. Si está en su máquina local, necesitará un matraz para unirse a todas las IP:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run(host='0.0.0.0')

Eso funciona para mí con éxito.


1
Así es. Nunca pensé que esto es realmente un problema de python o matraz, ya que lo copié de los documentos . Thx
mcnesium

O con gunicorn:gunicorn --bind 0.0.0.0:5000 app:app
Martin Thoma

1
Si está usando flask run, use --host=0.0.0.0. O en el Dockerfile:CMD ["flask", "run", "--host=0.0.0.0"]
sebas

He estado buscando esto durante 4 días> D lol
eleijonmarck
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.