Question

Flask Docker container SocketIO Issues

Posted December 8, 2020 2k views
DockerFlask

I have a Flask application that uses SocketIO to fetch data from Postgres live.

My socketio in JS is like this:

var socket = io.connect('http://localhost:8083')
The app works fine when I run this locally.

The problem arouses when I use docker-compose to host my Flask app, localhost is no more recognized as my docker-compose uses a bridge network.

My docker-compose is as such:

version: "3.8"

services:
  fortweet:
    container_name: Fortweet
    build: ./
    env_file:
      - secret.env
    networks:
      - plutusnet
    ports:
      - 8083:8083
    restart: always

networks:
  plutusnet:
    name: plutus_network
    driver: bridge

I’ve also tried to use var socket = io.connect('http://fortweet:8083') but my socket connection still doesn’t work.

I have also a Postgres DB in the plutus_network hosted on my server. I don’t know if this information is useful but I’m just mentioning it here.

Can anyone help me ?

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
Submit an Answer
1 answer

Hi there @th3pl4gu33,

Are you running your JS application directly on the host or on inside a container connected to the same Docker network?

If this is the case, what I could suggest is running netstat -plant after starting the Flask Docker container to see if the port is exposed to the host correctly.

Another thing that I could suggest is running docker inspect for your network to see if the Flask container is correctly connected. Also maybe try to set the container name to fortweet rather than Fortweet to avoid any problems due to case sensitivity.

Let me know how it goes.
Regards,
Bobby

  • Hello,

    I renamed the contianer to fortweet and now within my container i can ping fortweet!

    However, the socket is still not working.

    Can someone help please ?