App Engine Flexible Environment - 镜像构建时跳过 Dockerfile 包安装
App Engine Flexible Environment - Dockerfile Package installs skipped on image build
在 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
...
在 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
...