Error running streamlit docker

I’ve been trying to create an docker image to run fbprohet and streamlit. When i run the docker run command i get the below error.

I’ve stuck on this issue for a number of days now. Any help would be appreciated.

Thanks,

     $ docker run <image-id> streamlit hello
    Generate machine-id
    Traceback (most recent call last):
      File "/usr/local/bin/streamlit", line 5, in <module>
        from streamlit.cli import main
      File "/usr/local/lib/python3.7/site-packages/streamlit/__init__.py", line 74, in <module>
        subprocess.run(["sudo", "dbus-uuidgen", "--ensure"])
      File "/usr/local/lib/python3.7/subprocess.py", line 488, in run
        with Popen(*popenargs, **kwargs) as process:
      File "/usr/local/lib/python3.7/subprocess.py", line 800, in __init__
        restore_signals, start_new_session)
      File "/usr/local/lib/python3.7/subprocess.py", line 1551, in _execute_child
        raise child_exception_type(errno_num, err_msg, err_filename)
    FileNotFoundError: [Errno 2] No such file or directory: 'sudo': 'sudo'

Dockerfile

FROM python:3.7-alpine

WORKDIR /workspace

COPY requirements.txt .

RUN apk add --no-cache python3 python3-dev build-base libffi-dev openssl-dev curl krb5-dev linux-headers zeromq-dev jpeg-dev zlib-dev && \
    python3 -m ensurepip && \
    rm -r /usr/lib/python*/ensurepip && \
    pip3 install --upgrade pip setuptools && \
    if [ ! -e /usr/bin/pip ]; then ln -s pip3 /usr/bin/pip ; fi && \
    if [[ ! -e /usr/bin/python ]]; then ln -sf /usr/bin/python3 /usr/bin/python; fi && \
    rm -r /root/.cache


RUN apk --update add --no-cache gcc freetype-dev libpng-dev

RUN apk add --no-cache --virtual .build-deps \
    musl-dev \
    g++


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

# removing dependencies
RUN apk del .build-deps


EXPOSE 9999

Hi @zalam, welcome to the Streamlit community! (and sorry the StackOverflow person was a jerk to you)

I wrote my suspected answer on SO, but I’ll copy it here for everyone else:

To me, it looks like we are requiring sudo to be installed in the environment, so if you add sudo to your apk add statement, it might work. Separately, I’m checking with our engineering group to understand why we require sudo and whether we can get that removed in a future release.

Best,
Randy

1 Like

Thanks @randyzwitch

I managed to sort the issue by changing the base python image. Will go back an look at implementing you suggestion to see if that works.

Thanks for your response :smile: :sparkling_heart: Streamlit!!!

1 Like

May I know which python is it? Thanks

I am using this
With 3.7 (hosting provider (linux company) cannot upgrade to higher python and cannot let me use sudo). Why would you need sudo, can you get around this sudo requirement

I am encountering this error FileNotFoundError: [Errno 2] No such file or directory: 'sudo' when running streamlit on AWS App Runner. Strangely I do not receive this error when running locally via docker.

@randyzwitch did you get anywhere with checking sudo and whether we can get that removed, strikes me as not desirable behaviour?

I suppose the problem could also be solved by using an apprunner.yaml file for the AWS App Runner configuration.

https://docs.aws.amazon.com/apprunner/latest/dg/service-source-code-python.html

I am going down the container route - turns out amazon linux base images do not include sudo

I haven’t tried AWS App Runner yet.

Can you run something like this in the Build command field?

apk --no-cache add sudo && pip install -r requirements.txt

By the way, if this doesn’t work, you will also have problems to install additional packages with packages.txt at all!? :thinking:

Ive had quite an education afternoon. After switching base image to python3.8, pushing to a private ECR repo I got role permissions errors, even though all appears to be in order. The switched to public ECR repo and finally got the app depolyed, only to get more errors since I built the image on an ARM Mac and this is incompatible with aws instace (TBC) - error standard_init_linux.go:219: exec user process caused: exec format error`.

Yes, we’ll be removing it in the near-term, but unfortunately I don’t have the timeline for that yet.

1 Like

I am extremely interested in getting this working in AWS App Runner.

2 Likes

Dear all,

I am trying to deploy my streamlit app on docker.
I successfully deployed my streamlit app using docker but its not connecting the url generated : http://172.17.0.2:8501

It is showing this site cant be reached…refused to connect …

Commands used:

docker build -t billing:latest . (to build image)

docker run -p 8501:8501 billing:latest ( expose)

Dockerfile:
FROM python:3.7

WORKDIR /app

COPY requirements.txt ./requirements.txt

RUN pip3 install -r requirements.txt

EXPOSE 8501

COPY . /app

ENTRYPOINT [“streamlit”,“run”]

CMD [“billing_app_main_copy.py”]

Kindly help…what to do? I am new to deploying and have deployed on streamlit sharing only.

Regards

  • I don’t know what the second screenshot is supposed to say?
  • Check the docker logs for any error messages.
  • Where is the Docker container running? On the local Windows system? Then try it with http://localhost:8501/

here is the output on checking logs…
no such error message

App is already running on the local system,(port 8501) its working fine. Also have deployed the same using streamlit sharing but i want to deploy using dockers