python-3.x - 谷歌应用引擎 - 应用因长期部署而变得不健康

标签 python-3.x ubuntu visual-studio-code dockerfile gcloud

在过去的三个月里,我一直在尝试使用 GIS 数据部署 webapp。该应用程序很重,可以说我的笔记本电脑运行起来有些困难,尽管我可以在本地运行它,而且显然我终于可以设置它了;虽然我仍然面临错误。
我也要去 condaenv 而不是 pip、pip 和 gdal 他们让我头疼。

应用程序.yaml

runtime: custom
env: flex

resources:
  cpu: 4
  memory_gb: 6.5
  disk_size_gb: 10

liveness_check:
  path: "/liveness_check"
  timeout_sec: 4
  check_interval_sec: 60
  failure_threshold: 10

readiness_check:
  path: "/readiness_check"
  app_start_timeout_sec: 900

entrypoint: gunicorn -b :$PORT app:app

runtime_config:
    python_version: 3

我在 .yaml 文件中声明了我的 ENTRYPOINT,因为它似乎是比使用 dockerfile 更好的选择。

Dockerfile
FROM continuumio/miniconda:latest

WORKDIR /home/reinhold/Documents/webapps/house_market_app/ihm_condaenv

COPY environment.yml ./
COPY app.py ./
COPY boot.sh ./


RUN chmod +x boot.sh \
    && conda env create -f environment.yml \
    && conda install -n base -c defaults conda\
    && echo "source activate ihm_condaenv" > ~/.bashrc

ENV PATH /home/reinhold/anaconda3/envs/ihm_condaenv/bin:$PATH

EXPOSE 8080

#RUN /bin/bash -c "source /home/reinhold/anaconda3/envs/ihm_condaenv/bin/ihm_condaenv.sh"

CMD ["./boot.sh"]

#ENTRYPOINT [“–host=0.0.0.0”, “–admin_host=0.0.0.0” , "app.py"]


我不太确定是否需要在这里再次声明 ENTRYPOINT,因为当我不这样做时,我会收到一个错误,例如应用程序没有正确启动。
我还声明了我的入口点

boot.sh 文件
#!/bin/sh
gunicorn -b :$PORT --access-logfile - --error-logfile - app:app 
#gunicorn -b :8080 --access-logfile - --error-logfile - wsgi:app

错误
ERROR: (gcloud.app.deploy) Error Response:
[4] Your deployment has failed to become healthy in the allotted time and therefore was rolled back.
If you believe this was an error,
try adjusting the 'app_start_timeout_sec' setting in the 'readiness_check' section.

我将不胜感激任何帮助
[GitHub 存储库][ https://github.com/Reinhold83/ihm_condaenv#ihm_condaenv]

最佳答案

该行为是预期的,我认为您误解了这些概念。

如果您使用 App Engine Flexible Custom Runtimes ,入口点在 Dockerfile 中定义,因为自定义运行时搜索 Dockerfile 以进行配置,正如您在自定义运行时的 app.yaml 文件的一般设置中看到的那样,没有在 app.yaml 文件中定义入口点的选项。

使用 App Engine Flexible Predefined Runtimes作为 Python、Java 等,您可以在 app.yaml 中指定入口点,因为这些运行时不需要 Dockerfile 进行配置。

请让我知道有关此的任何其他问题。

关于python-3.x - 谷歌应用引擎 - 应用因长期部署而变得不健康,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61831985/

相关文章:

reactjs - typescript 和 Gatsby : Development bundle cannot resolve paths but VS Code can

visual-studio-code - 如何在自定义 VSCode 语言中引用注入(inject)的语法

python - 如何在python中遍历矩阵

python - 为什么Python3会执行一段被注释掉的代码?

linux - 在 ubuntu 16.04 上安装 mongodb 时出错

linux - 我可以在 freeBSD 上安装 IntelliJidea 吗?

visual-studio-code - 如何让 Visual Studio Code 在一个文件中识别 html、php 和 javascript?

css - 操作系统错误 : [WinError 193] %1 is not a valid Win32 application for loading css file in python cgi script

python - Jupyter Ipywidgets - 如何在重新打印输出之前清除单元格输出

php - Windows w/Precise64 上的 Vagrant 运行 php 非常慢