Connection time out on streamlit app on accessing url through docker container

I am using a dockerfile like:

FROM python:3.7.3


COPY requirements.txt /app/

RUN pip install --no-cache-dir -r requirements.txt
RUN pip install streamlit

COPY . /app


CMD ["streamlit", "run", ""]

and on running the docker image:
docker run -d -p 8051:8080 --name app firstimage:v1

I get a message in the logs of the container:

Collecting usage statistics. To deactivate, set browser.gatherUsageStats to False.

  You can now view your Streamlit app in your browser.


On accessing the URL through my browser, I get timed out after a while. Do you know how to fix this?

Thank you very much!

It seems like you are facing connectivity issues when trying to access your Streamlit app running inside a Docker container. Here are a few things you can check and try to resolve the issue:

Port Mapping:

In your docker run command, you have -p 8051:8080, which maps port 8080 from the container to port 8051 on the host. However, your Streamlit app is running on port 8501 inside the container (CMD [“streamlit”, “run”, “”]). Ensure that you are mapping the correct port.
Update your docker run command to:

docker run -d -p 8501:8501 --name app firstimage:v1

This will map port 8501 from the container to port 8501 on the host.

Check Firewall Settings:

Make sure that there are no firewall restrictions preventing external access to port 8501 on your host machine. Adjust your firewall settings if needed.
Binding to All Network Interfaces:

By default, Streamlit binds to localhost ( inside the Docker container. This should allow external access. However, you might want to explicitly specify the host when running the Streamlit app:
Update your CMD in the Dockerfile to:

CMD ["streamlit", "run", "--server.address", "", ""]

Check Docker Container Logs:

Check the logs of your Docker container to see if there are any error messages or issues reported. You can use the following command to view container logs:

docker logs app

Replace “app” with the actual name of your running container.

Docker Container IP:

In some cases, you might need to use the IP address of the Docker container instead of when accessing the app. You can find the container’s IP address using:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' app

Replace “app” with the actual name of your running container.

After making these adjustments, try accessing your Streamlit app using the correct URL (http://localhost:8501) or (http://<container_ip>:8501) in your browser. If the issue persists, check the logs for any error messages that might provide more information about the problem.