在GCP上构建docker映像时进程被终止

在GCP上构建docker映像时进程被终止,docker,google-cloud-platform,pytorch,torchvision,streamlit,Docker,Google Cloud Platform,Pytorch,Torchvision,Streamlit,我是一名云计算新手,第一次在谷歌云平台上部署我的web应用程序时遇到了困难。当我构建docker映像时,这意味着我运行了以下代码 docker build -t gcr.io/${PROJECT_ID}/insurance-streamlit:v1 . 进程被终止,显示以下错误: Killed The command '/bin/sh -c pip install -r requirements.txt' returned a non-zero code: 137 我猜我的应用程序可能太大了

我是一名云计算新手,第一次在谷歌云平台上部署我的web应用程序时遇到了困难。当我构建docker映像时,这意味着我运行了以下代码

docker build -t gcr.io/${PROJECT_ID}/insurance-streamlit:v1 .
进程被终止,显示以下错误:

Killed
The command '/bin/sh -c pip install -r requirements.txt' returned a non-zero code: 137
我猜我的应用程序可能太大了,因为权重文件已经超过了100MB。那么有没有办法解决这个问题呢?请告诉我细节,提前谢谢

PS:我的Dockerfile如下:

FROM python:3.7
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
我的requirements.txt类似于:

albumentations==0.4.5
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
streamlit==0.62.0
torch==1.4.0
torchvision==0.5.0
matplotlib

我发现,要构建Docker映像,您应该有足够的磁盘空间和安装的Python 3.7,而且Docker文件中有一个输入错误-在最后一个字符串的末尾没有单引号
'
。除此之外,一切看起来都很好,运行正常

请在下面找到我的步骤:

  • 启用Google容器注册API

  • 创建虚拟机实例:

  • 遵循文档
  • 安装Python 3.7:
  • 构建Docker映像:
  • 更改Docker文件的最后一个字符串:
  • 再次生成Docker映像:
  • 将Docker映像推送到注册表:
  • 创建新VM实例并部署映像:
  • 检查Docker容器的状态:
  • 而且看起来不太好

  • 停止容器:
  • 遵循并以交互方式运行容器:
  • 这并不奇怪,因为我没有
    app.py

    在那之后,我添加了一些虚拟的
    app.py
    ,重新构建并最终运行:

    instance-6 ~ $ docker ps
    CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS              PORTS               NAMES
    1de2e8ded5d8        gcr.io/test-prj/testimage:v2   "/bin/sh -c 'streaml…"   7 minutes ago       Up 7 minutes                           klt-instance-6-yezv
    

    你能粘贴你的dockerfile内容吗?另外,请提供
    requirements.txt
    。编辑,谢谢你的评论@孟菲斯:您可能遇到了内存不足错误。尝试使用
    -it
    标记进行调试,或为容器分配更多内存。标记
    -it
    在哪里使用?谢谢,Serhii。我认为你的方法应该是正确的,但我还是遇到了这个错误。所以我想知道你在
    requirements.txt
    中放了什么PakCGE?我需要Pytork,每次在步骤8/16安装Pytork时它都会被杀死。我知道Torch是一个巨大的软件包,所以如果你检查一下的话,我不会使用它。我根本没有更改
    requirements.txt
    。我更改了Docker文件(
    是在第6步添加的),并使用了一些虚拟的
    app.py
    print
    命令。此外,我还将Python3.7安装到GCP VM,我使用它来构建Docker映像。您在哪一步出错?我在收集torch时仍然被杀,这是第8/16步。请检查您的系统中是否安装了足够的磁盘空间和Python 3.7?请用构建日志更新您的问题。我想是的,因为我使用了浏览器上的终端,并按照您的建议创建了VM。
    sudo apt install python3.7
    
    docker build -t gcr.io/test-prj/testimage:v1 .
    ...
    Step 16/16 : RUN bash -c 'echo -e "[server]\nenableCORS = false\n" > /root/.streamlit/config.toml
     ---> Running in 57502f97cfbe
    /bin/sh: 1: Syntax error: Unterminated quoted string
    The command '/bin/sh -c bash -c 'echo -e "[server]\nenableCORS = false\n" > /root/.streamlit/config.toml' returned a non-zero code: 2
    
    " > /root/.streamlit/config.toml'
    
    docker build -t gcr.io/test-prj/testimage:v1 .
    ...
    Step 16/16 : RUN bash -c 'echo -e "[server]\nenableCORS = false\n" > /root/.streamlit/config.toml'
     ---> Running in c1c1f81a2d09
    Removing intermediate container c1c1f81a2d09
     ---> 24b6609de554
    Successfully built 24b6609de554
    Successfully tagged gcr.io/test-prj/testimage:v1
    $ docker images
    REPOSITORY                            TAG                 IMAGE ID            CREATED             SIZE
    gcr.io/test-prj/testimage             v1                  24b6609de554        14 minutes ago      3.87GB
    
    gcloud docker -- push gcr.io/test-prj/testimage:v1
    
    gcloud compute instances create-with-container instance-5 --zone=europe-west3-a --machine-type=e2-medium --image=cos-stable-81-12871-148-0 --image-project=cos-cloud --boot-disk-size=50GB --container-image=gcr.io/test-prj/testimage:v1 
    
    instance-5 ~ $ docker ps
    CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS                                  PORTS               NAMES
    e21b80dc0de7        gcr.io/test-prj/testimage:v1   "/bin/sh -c 'streaml…"   28 seconds ago      Restarting (2) Less than a second ago                       klt-instance-5-caqx
    
    instance-5 ~ $docker stop e21b80dc0de7
    
    instance-5 ~ $docker run --name test -it gcr.io/test-prj/testimage:v1
    Usage: streamlit run [OPTIONS] TARGET [ARGS]...
    
    Error: Invalid value: File does not exist: app.py
    
    instance-6 ~ $ docker ps
    CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS              PORTS               NAMES
    1de2e8ded5d8        gcr.io/test-prj/testimage:v2   "/bin/sh -c 'streaml…"   7 minutes ago       Up 7 minutes                           klt-instance-6-yezv