Streamlit Docker (.streamlit files)

Hi,

I am deploying my application using docker container. While I build and test the docker image in the local, It works perfectly fine. But when I deploy it to the Azure server I get Bad Gateway error. I though this might be due to CORS issue and learned from community discussions to use .streamlit folder and reference the 2 line code in the Dockerfile, so the issue might be resolved.
RUN mkdir ~/.streamlit
RUN cp .streamlit/config.prod.toml ~/.streamlit/config.toml

I had copied these files to my project folder. But while building the docker image, I get this below error.

=> ERROR [7/7] RUN cp .streamlit/config.prod.toml ~/.streamlit/config.toml                                                                                                                0.3s
------
 > [7/7] RUN cp .streamlit/config.prod.toml ~/.streamlit/config.toml:
#11 0.227 cp: cannot stat '.streamlit/config.prod.toml': No such file or directory
------
failed to solve with frontend dockerfile.v0: failed to build LLB: executor failed running [/bin/sh -c cp .streamlit/config.prod.toml ~/.streamlit/config.toml]: runc did not terminate sucessfully

This is my folder structure.

I also tried moving .streamlit folder to same location of the Dockerfile. But it didn’t work for me.

I also tried the other workarounds suggested in the community by changing docker file CMD to

streamlit run my_app.py --server.enableCORS=false
streamlit run my_app.py --server.enableWebsocketCompression=false

But still getting the same error.

502 Bad Gateway
nginx/1.17.8

Dockerfile:

FROM python:3.7

ENV PYTHONUNBUFFERED 1

COPY ./requirements.txt /requirements.txt

RUN pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org -r /requirements.txt

COPY ./app /app

WORKDIR /app

# streamlit-specific commands

#RUN mkdir ~/.streamlit

#RUN cp .streamlit/config.prod.toml ~/.streamlit/config.toml

EXPOSE 80

CMD streamlit run main.py --server.enableWebsocketCompression=false

Can someone help me where Exactly I am missing.

Thanks.

I am able to fix the issue. Here is the solution if someone face similar issue.
Use :
COPY .streamlit/config.prod.toml /root/.streamlit/config.toml
instead of
RUN cp .streamlit/config.prod.toml ~/.streamlit/config.toml

This solved the issue. The application perfectly works on Azure platform.

1 Like

Hi Chakra,

your folder structure looks not correct, you are trying to copy the folder outside of build context, you can move your .streamlit folder to inside your docker build context.