Гибкая среда App Engine - Dockerfile устанавливает устаревшую версию GDAL - PullRequest
1 голос
/ 23 апреля 2020

Я пытаюсь использовать изображение Docker в гибкой среде Google App Engine.

FROM ubuntu:bionic
MAINTAINER Makina Corpus "contact@makina-corpus.com"

ENV PYTHONUNBUFFERED 1
ENV DEBIAN_FRONTEND noninteractive
ENV LANG C.UTF-8

RUN apt-get update -qq && apt-get install -y -qq \
    # std libs
    git less nano curl \
    ca-certificates \
    wget build-essential\
    # python basic libs
    python3.8 python3.8-dev python3.8-venv gettext \
    # geodjango
    gdal-bin binutils libproj-dev libgdal-dev \
    # postgresql
    libpq-dev postgresql-client && \
    apt-get clean all && rm -rf /var/apt/lists/* && rm -rf /var/cache/apt/*

# install pip
RUN wget https://bootstrap.pypa.io/get-pip.py && python3.8 get-pip.py && rm get-pip.py
RUN pip3 install --no-cache-dir setuptools wheel -U

CMD ["/bin/bash"]

Образ docker создается правильно, но при развертывании службы происходит сбой приложения, и я получаю следующее сообщение об ошибке:

  File "/Users/NAME/Documents/gcp/google-cloud-sdk/lib/googlecloudsdk/api_lib/app/operations_util.py", line 183, in IsDone
    encoding.MessageToPyValue(operation.error)))
OperationError: Error Response: [9] 
Application startup error! Code: APP_CONTAINER_CRASHED

ERROR: (gcloud.app.deploy) Error Response: [9] 
Application startup error! Code: APP_CONTAINER_CRASHED

Сбой при установке Dockerfile значительно устаревшая версия пакета GDAL, которая конфликтует с более современной python установкой.

Как мне убедиться в том, что файл dockerfile имеет правильный репозиторий пакетов и устанавливает правильные, актуальные версии? Есть ли какая-нибудь строка, которую я могу вставить, чтобы обновить репозиторий или, по крайней мере, распечатать репозиторий перед его установкой?

РЕДАКТИРОВАТЬ:

Мой app.yaml:

# [START django_app]

runtime: custom
env: flex
entrypoint: gunicorn -b :$PORT MyApplication.wsgi

runtime_config:
  python_version: 3
# [END runtime]

handlers:
# This configures Google App Engine to serve the files in the app's static
# directory.
#- url: /static
#  static_dir: static/
#- url: /MyApplication/static
#  static_dir: MyApplication/static/


# This handler routes all requests not caught above to your main app. It is
# required when static routes are defined, but can be omitted (along with
# the entire handlers section) when there are no static files defined.
- url: /.*
  script: auto
# [END django_app]

resources:
  cpu: 1
  memory_gb: 2
  disk_size_gb: 10

1 Ответ

1 голос
/ 24 апреля 2020

Развертывание You App Engine завершается сбоем, поскольку требуется служба, прослушивающая порт 8080 , и он не может запустить bash в облаке. Если вам нужно отладить свой экземпляр App Engine Flex, сначала необходимо получить службу на порту 8080 , а затем включить S SH.

...