15

I was builting a web app with streamlit, OpenCV and Torch on local machine. The whole project went well until I built a Docker file and was about to transport it to my Google Cloud Platform. Can anyone tell me what is really going wrong here? enter image description here

Here is my Dockerfile:

FROM pytorch/pytorch:latest
RUN pip install virtualenv
ENV VIRTUAL_ENV=/venv
RUN virtualenv venv -p python3
ENV PATH="VIRTUAL_ENV/bin:$PATH"

WORKDIR /app
ADD . /app

# Install dependencies
RUN pip install -r requirements.txt

# copying all files over
COPY . /app

# Expose port 
ENV PORT 8501

# cmd to launch app when container is run
CMD streamlit run app.py

# streamlit-specific commands for config
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8
RUN mkdir -p /root/.streamlit
RUN bash -c 'echo -e "\
[general]\n\
email = \"\"\n\
" > /root/.streamlit/credentials.toml'

RUN bash -c 'echo -e "\
[server]\n\
enableCORS = false\n\
" > /root/.streamlit/config.toml'

And requirements.txt:

albumentations==0.4.5
matplotlib==3.2.2
numpy==1.19.0
opencv-python==4.1.0.25
# opencv-python-headless==4.2.0.34
pandas==1.0.5
Pillow==7.1.2
scipy==1.5.0
streamlit==0.62.0
mebius99
  • 2,495
  • 1
  • 5
  • 9
Memphis Meng
  • 1,267
  • 2
  • 13
  • 34

3 Answers3

30

Maybe, you should run following command before pip.

apt update
apt-get install -y libglib2.0-0 libsm6 libxrender1 libxext6
huyu
  • 324
  • 3
  • 4
2

Anyone encountering this issue and wanting to install a minimum number of external packages, this solved using open-cv and torch in one docker image for me:

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install\
    libgl1\
    libgl1-mesa-glx \ 
    libglib2.0-0 -y

P.S.: Notice how the combined apt-get update and apt-get install safe one layer.

P.S.S.: As huyu mentioned: include this in your Dockerfile before the pip command.

EricT
  • 63
  • 6
0

I had similar error when trying to run the fresh install of Anki flashcard program. Searched/installed missing "libgthread-2" via YaST2 Package Manager.

userko
  • 41
  • 2