I am trying to use a Docker image on Google App Engine Flexible Environment.
FROM ubuntu:bionic MAINTAINER Makina Corpus "[email protected]" 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"] The docker image appears to build correctly but when the service deploys the application crashes and i get this error message:
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 This is failing as the Dockerfile is installing a significantly outdated version of the GDAL package which conflicts with the more current python installation.
How do I ensure that the dockerfile has the correct package repository and is installing the right, up to date, versions? Is there some line that I can insert to update the repository, or at least print the repository, before it starts installing?
EDIT:
My 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