【问题标题】:Installing Java in Google App Engine with Python runtime使用 Python 运行时在 Google App Engine 中安装 Java
【发布时间】:2020-05-12 11:27:31
【问题描述】:

我是 Google App Engine 的新手。 我使用 python 运行时创建了一个新项目,并使用 Flask 公开了一些 API 端点。其中一种方法使用依赖于Java(8+)的python库(tabula-py)。 当我在本地运行时,一切正常,但是在部署到 gcloud 后失败了。在 App Engine 中设置 Java 的任何提示?无法通过requirements.txt安装

非常感谢!

问候, 阿比

【问题讨论】:

    标签: java python google-app-engine


    【解决方案1】:

    GAE 在默认情况下仅具有您在 app.yaml 中指定的运行时的容器中运行您的应用程序。但是,您可以使用 Python 和 Java set a custom runtime 来运行您的应用程序。

    为此,您必须使用 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 库,因为由于某种原因,导入在我的环境中失败(甚至在本地)。不过,我相信它应该可以工作。

    作为参考,我基于this answer 中的Dockerfile

    【讨论】:

    • 您好何塞,非常感谢您。这有助于在容器中设置我的 Java。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多