Streamlit has become a popular choice for data scientists and developers to create interactive web applications without the need for extensive web development knowledge. However, deploying these applications can sometimes be a challenge. In this article, we’ll walk you through the steps to deploy your Streamlit dashboard online using Docker and docker-compose
.
Prerequisites:
- Basic knowledge of Python and Streamlit.
- Docker and
docker-compose
installed on your machine. - A Streamlit app you want to deploy.
Step-by-step Guide:
1. Create a Dockerfile for your Streamlit app
In the root directory of your Streamlit app, create a file named Dockerfile
and add the following content:
FROM python:3.8-slim
WORKDIR /app
COPY requirements.txt ./requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["streamlit", "run", "your_app_name.py"]
DockerfileReplace your_app_name.py
with the name of your Streamlit app file.
2. Create a docker-compose.yml file
Next, create a docker-compose.yml
file in the same directory with the following content:
version: '3'
services:
web:
build: .
ports:
- "8501:8501"
YAMLThis configuration tells Docker to build an image using the Dockerfile and then run it, exposing port 8501.
3. Build and Run your Streamlit app
Navigate to the directory containing your Dockerfile
and docker-compose.yml
in the terminal and run:
docker-compose up --build
BashThis will build a Docker image for your Streamlit app and start a container. You should be able to access your app locally at http://localhost:8501
.
4. Deploying Online
To deploy your Streamlit app online, you can use cloud platforms like AWS, Google Cloud, or DigitalOcean. Here’s a general approach:
- Push your Docker image to a container registry like Docker Hub.
- Set up a virtual machine on your cloud provider.
- Install Docker and
docker-compose
on the virtual machine. - Pull your Docker image from the container registry.
- Run your Streamlit app using
docker-compose up
.
Conclusion
Deploying a Streamlit app with Docker and docker-compose
simplifies the deployment process and ensures that your app runs in a consistent environment. With this approach, you can easily scale and manage your Streamlit apps in production. Happy coding!