streamlit-nginx is a Docker image with Streamlit and Nginx for web-based demo applications in Python 3.6 and above, in a single container.
The Docker image is configured using a server upstream in Nginx, which allows the deployment to Kubernetes clusters without the risk to get a socket connection timeout without editing the default values (see discussion here)
Here's the supported tags with the corresponding Dockerfile:
python3.6python3.7python3.8python3.9latest(Only available in Docker Hub, it is an alias for the most recent Python version,3.9at the moment)
streamlit-nginx should be used as a base image for the containers hosting your own Streamlit application. You should set the base image in your Dockerfile, without cloning the repository:
FROM lucone83/streamlit-nginx:python3.8
<your Dockerfile code>
CMD ["streamlit", "run", "your_application_file_path.py"]You can override the default nginx settings file with your own. All you need to do is to copy it in the right container folder. Your Dockerfilewill look like:
FROM lucone83/streamlit-nginx:python3.8
<your Dockerfile code ... >
COPY --chown=streamlitapp your-nginx-file-path /home/streamlitapp/.nginx/nginx.conf
< ... rest of your Dockerfile code>NOTE: at the moment I haven't introduced the possibility to change the app directory in an easy way. The Docker image has a default user (streamlitapp) with its own home directory (/home/streamlitapp).
At the moment it is not possible to change the nginx listening port, which is set to 8080.