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í?

mcnesio
fuente

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.

BoomShadow
fuente
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