Dockerのコンテナ内でflaskアプリケーションを立ち上げて、websocketを用いたリアルタイム通信の実装をしようとしていたのですが、下記コードのもとで

WebSocket connection to 'ws://0.0.0.0:5000/pipe' failed: Error during WebSocket handshake: Unexpected response code: 500
(anonymous)

のエラーが出ます。問題となりそうなソースは
app.py

from flask import Flask, jsonify, render_template, request

from src.database import init_db

from gevent.pywsgi import WSGIServer
from geventwebsocket.handler import WebSocketHandler

import time

app = Flask(__name__)
app.config.from_object('src.config.Config')


init_db(app)

@app.route("/", methods=["GET"])
def main_page():
    return render_template("index.html")

@app.route("/pipe")
def pipe():
    if request.environ.get('wsgi.websocket'):
        ws = request.environ['wsgi.websocket']

        while True:
            time.sleep(1)
            ws.send("hello world")

    return

if __name__ == '__main__':
    app.debug = True

    host = "0.0.0.0"
    port = 5000

    host_port = (host, port)
    server = WSGIServer(
            host_port,
            app,
            handler_class=WebSocketHandler
            )
    server.serve_forever()


docker-compose.yml

version: '3'

services:
  api:
    build: .
    ports: 
      - "5000:5000"
    volumes:
      - "./src:/src"
    tty: true
    environment:
      TZ: Asia/Tokyo
      FLASK_APP: app.py
      FLASK_ENV: development
    command: flask run -h 0.0.0.0
  db:
    build: ./mysql/
    volumes:
      - ./mysql/sqls:/docker-entrypoint-initdb.d
    environment:
      - MYSQL_ROOT_PASSWORD=

index.html

<html>
    <head>
    <script type="text/javascript">
      var ws = new WebSocket("ws://0.0.0.0:5000/pipe");

      ws.onmessage = function(e){
        document.getElementById("text-field").innerHTML = e.data;
      }
    </script>
    </head>
  <body>
    <h1>WEB_SOCKET_SAMPLE</h1>
    <p id="text-field"></p> 
  </body>
</html>

host,portのあたりが怪しいのかもとは思っているのですが問題点はわからなかったです。