docker - App Engine灵活环境-镜像构建时跳过Dockerfile软件包安装

标签 docker google-app-engine google-cloud-platform app-engine-flexible

在App Engine灵活环境中构建自定义运行时时,我试图安装软件包的Dockerfile中的行似乎被跳过了。特别是这两个:

RUN add-apt-repository ppa:ubuntugis/ppa

RUN sudo apt-get install -y gdal-bin

终端显示gcloud app deploy命令通过拉动python运行时开始,然后跳过处理Dockerfile直到此行:
RUN virtualenv /env -p python3.7

这是我的整个Dockerfile。当应用程序尝试启动时,它失败了,因为它找不到我尝试安装的GDAL软件包安装。
FROM ubuntu:bionic


RUN add-apt-repository ppa:ubuntugis/ppa

RUN sudo apt-get install -y gdal-bin


# Create a virtualenv for dependencies. This isolates these packages from
# system-level packages.
# Use -p python3 or -p python3.7 to select python version. Default is version 2.
RUN virtualenv /env -p python3.7



# Setting these environment variables are the same as running
# source /env/bin/activate.
ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH

# Copy the application's requirements.txt and run pip to install all
# dependencies into the virtualenv.
RUN pip install -r requirements.txt

# Add the application source code.
ADD . /


# Run a WSGI server to serve the application. gunicorn must be declared as
# a dependency in requirements.txt.
CMD gunicorn -b :$PORT main:app

最佳答案

根据您的Dockerfile,Cloud Build不应拉Python运行时,而应拉ubuntu:bionic图像。部署非自定义Flex应用程序时,Cloud Build将拉动Python运行时。

我相信您需要在app.yaml文件中设置适当的运行时,如下所示:

runtime: custom
env: flex
...

而不是runtime:python

另外,在尝试使用Dockerfile进行测试后,我注意到了两个问题:
  • 似乎add-apt-repository图像上默认不提供ubuntu:bionic,我必须手动安装它。
  • 您无法在Dockerfile中运行sudo

  • 因此,您的Dockerfile如下所示:
    FROM ubuntu:bionic
    
    RUN apt-get update && apt-get install software-properties-common -y
    RUN add-apt-repository ppa:ubuntugis/ppa
    
    RUN apt-get install -y gdal-bin
    ...
    

    关于docker - App Engine灵活环境-镜像构建时跳过Dockerfile软件包安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61712215/

    相关文章:

    docker - PHP 无法解析主机名

    python - Google App Engine Python 上的 Imaplib

    Java谷歌云端点存在查询

    node.js - TCP 服务器的 GCP Compute Engine 防火墙规则

    docker - 将 Gcloud 与 Vagrant 一起使用

    node.js - Fastify 无法在 Docker/Kubernetes 上运行

    javascript - 使用 Google App Engine Flask dev_appserver.py 运行本地开发时,Chrome 不会刷新静态 JS 文件

    google-cloud-platform - 不正确的服务网络配置,例如 : xxxx:SERVICE_NETWORKING_NOT_ENABLED

    node.js - Google Cloud Datastore 如何在本地运行?

    database - Postgresql Docker 角色不存在