Streamlit + docker not working

Hi,
IĀ“m trying to dockerize an app made with streamlit but IĀ“ve tried for four days so far and nothing has worked for me.
It takes ages to build the image and when I try to run it, it returns: /bin/sh: 1: streamlit: not found .
This is my docker file (This is my first time using docker )

FROM continuumio/miniconda3

ENV LC_ALL=C.UTF-8

ENV LANG=C.UTF-8

RUN mkdir -p /root/.streamlit

RUN bash -c 'echo -e "\

WORKDIR /ModelosComercio

EXPOSE 8501

ADD environment.yml .

RUN conda env create --file environment.yml

CMD streamlit run ModelosStreamlit.py

Any help will be apreciated.

Thanks

Hi @Maria_Isabel_Meneses,

Thanks for posting!

Have you checked out our new doc on deploying with Docker?

Caroline :balloon:

Not actually but IĀ“m working with conda. Would it be the same if instead of ā€œenvironment.ymlā€ I try to install ā€œrequirements.txtā€ with pip?
IĀ“ve tried with pip and I get the same error so I donĀ“t really know how to handle this pip/conda thing

IĀ“ve just follow the new doc and I get this error when I try to do it with my project: docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: ā€œstreamlitā€: executable file not found in $PATH: unknown.

What can I do?

Have you tried following the doc (i.e. using the exact Dockerfile and docker run command in the doc and using pip and requirements.txt instead of conda?

Yes, IĀ“ve tried with pip and requirements.txt. Same result

Iā€™m at a loss as Iā€™m unable to reproduce the behavior. Iā€™ll defer to the rest of the community for solutions :sweat_smile:

The problem is that it canā€™t find the streamlit executable. In the case of installing streamlit with conda, the streamlit executable will be in miniconda3/bin/streamlit

1 Like

@Dynamo-github
Welcome to the community.
Please give us some more details about your specific problem or share a link to a public github repository so we can take a look.

Hi all, I got the same error with a warning message: add the directory root/.local/bin to the path, ā€˜/root/.local/binā€™ which is not on PATH..

I added
ENV PATH=ā€œ${PATH}:/root/.local/binā€ to the Dockerfile and I was able to run streamlit from within the docker file successfully.

I am not able to keep the docker container with my streamlit app running. The example works fine, but when I pull data using snowflake.connector, the container closes as soon as the query completes (and before all the other stuff I have in my app).
in Dockerfile:
FROM python:3.9-slim
in requirements.txt:
snowflake-connector-python~=2.7.2

I tried putting a decorator above the function to pull the data (@st.experimental_memo(persist=True))
I tried ChatGPTā€™s idea to add a while True: sleep(1) at the end of the script.

Any other suggestions?

Hi @Maria_Isabel_Meneses
Please check out the latest docs regarding Streamlit + Docker connection

Hope it will help you to solve your problem