GAE запускает ваши приложения в контейнерах, которые по умолчанию имеют только среду выполнения, указанную в app.yaml
. Однако вы можете установить пользовательскую среду выполнения с помощью Python и Java для запуска приложения.
Чтобы сделать это, вы должны использовать среду GAE Flexible и определить что-то вроде следующего в Dockerfile
:
### 1. Get Linux
FROM alpine:3.7
### 2. Get Java via the package manager
RUN apk update \
&& apk upgrade \
&& apk add --no-cache bash \
&& apk add --no-cache --virtual=build-dependencies unzip \
&& apk add --no-cache curl \
&& apk add --no-cache openjdk8-jre
### 3. Get Python, PIP
RUN apk add --no-cache python3 \
&& python3 -m ensurepip \
&& pip3 install --upgrade pip setuptools \
&& rm -r /usr/lib/python*/ensurepip && \
if [ ! -e /usr/bin/pip ]; then ln -s pip3 /usr/bin/pip ; fi && \
if [[ ! -e /usr/bin/python ]]; then ln -sf /usr/bin/python3 /usr/bin/python; fi && \
rm -r /root/.cache
ENV FLASK_APP main.py
ENV FLASK_RUN_HOST 0.0.0.0
ENV FLASK_RUN_PORT 8080
### Get Flask for the app
RUN pip install --trusted-host pypi.python.org flask
####
#### OPTIONAL : 4. SET JAVA_HOME environment variable, uncomment the line below if you need it
#ENV JAVA_HOME="/usr/lib/jvm/java-1.8-openjdk"
####
EXPOSE 8080
ADD main.py /
CMD ["flask", "run"]
Я протестировал пользовательскую среду выполнения и это сработало для меня, но я не смог протестировать библиотеку tabula-py, потому что по какой-то причине импорт не выполняется в моей среде (даже локально). Тем не менее, я считаю, что это должно работать.
Для справки, я основал свой Dockerfile
на том, что в этом ответе