Python asyncio container is not receiving socket connections

My Python 3.6 based container, running an asyncio server is not receiving incoming socket connections.
The same script running locally or inside a virtualenv works perfectly.
I’m using MacOS Sierra 10.12.5
Using Docker 17.03.1-ce-mac12

I’m using the code below replicates the issue also happening in a larger (real world) project I have.
A simple echo client / server setup.

# server.py
import asyncio

async def handle_echo(reader, writer):
    data = await reader.read(100)
    message = data.decode()
    addr = writer.get_extra_info('peername')
    print("Received %r from %r" % (message, addr))

    print("Send: %r" % message)
    writer.write(data)
    await writer.drain()

    print("Close the client socket")
    writer.close()

loop = asyncio.get_event_loop()
coro = asyncio.start_server(handle_echo, '127.0.0.1', 8888, loop=loop)
server = loop.run_until_complete(coro)

# Serve requests until Ctrl+C is pressed
print('Serving on {}'.format(server.sockets[0].getsockname()))
try:
    loop.run_forever()
except KeyboardInterrupt:
    pass

# Close the server
server.close()
loop.run_until_complete(server.wait_closed())
loop.close()
#client.py
import asyncio


async def tcp_echo_client(message, loop, port):
    reader, writer = await asyncio.open_connection('0.0.0.0', port, loop=loop)

    print('Send: %r' % message)
    writer.write(message.encode())

    data = await reader.read(100)
    print('Received: %r' % data.decode())

    print('Close the socket')
    writer.close()


message = 'Hello World!'
loop = asyncio.get_event_loop()
loop.run_until_complete(tcp_echo_client(message, loop, 8888))
loop.close()

Dockerfile

FROM python:3.6
RUN mkdir -p /app
ADD . /app
WORKDIR /app
EXPOSE 8888
ENTRYPOINT ["python", "server.py"]

Starting the container with
docker run -d -p 8888:8888 asyncio

Running the client.py script on my host machine, connecting to the container on port 8888.
I get the following:

Send: 'Hello World!'
Received: ''
Close the socket

Please try to replicate the above, and if anyone has any suggestions, ideas or comments, I’d be keen to know.

change in your server.py

coro = asyncio.start_server(handle_echo, '127.0.0.1', 8888, loop=loop)

to
coro = asyncio.start_server(handle_echo, '0.0.0.0', 8888, loop=loop)

currently you just bind the local interface.