[英]How to profile Google App Engine python27 runtime (not python)
[英]Unable to find/modify the Dockerfile of a Google App Engine Managed VM that uses a standard runtime (python27)
我想修改使用標准運行時(python27)的Google App Engine管理的VM的Dockerfile。
我要添加一個C ++庫,該庫需要調用才能實現HTTP請求。 這個庫幾乎是我對沙盒python27運行時唯一需要的添加。
該文檔很清楚地表明這是可能的:
每個標准運行時都使用由SDK提供的默認Dockerfile。 您可以通過向該文件添加新的docker命令來擴展和增強標准運行時。
他們在其他地方說,將在項目目錄中生成標准運行時的Dockerfile:
當您使用gcloud基於標准運行時(在本例中為Python27)運行或部署托管VM應用程序時,SDK將使用標准運行時作為基礎映像創建最小的Dockerfile。 您將在項目目錄中找到此Dockerfile ...
這是我應該根據同一頁面修改的內容:
本教程后面的步驟將向您展示如何通過向Dockerfile添加指令來擴展運行時環境的功能。
問題在於,當我在開發服務器上運行應用程序時,我無法在任何地方找到Dockerfile,因此無法對其進行任何更改。
是否有人設法修改Google App Engine的標准運行時Dockerfile? 任何幫助,將不勝感激。
要使用google-api-python-client我有同樣的問題,因為我需要pycrypto。 我總是得到錯誤:
CryptoUnavailableError:沒有可用的加密庫
為了解決這個問題,我創建了一個實例啟動處理程序,用於安裝所有需要的庫。 很難看,但是可以用。
app.yaml中:
handlers:
- url: /_ah/start
script: start_handler.app
start_handler.py
import webapp2
import logging
import os
class StartHandler(webapp2.RequestHandler):
def execute(self, cmd):
logging.info(os.popen("%s 2>&1" % cmd).read())
def get(self):
if not os.environ.get('SERVER_SOFTWARE','').startswith('Development'):
self.execute("apt-get update")
self.execute("apt-get -y install build-essential libssl-dev libffi-dev python-dev")
self.execute("pip install cryptography")
self.execute("pip install pyopenssl")
app = webapp2.WSGIApplication([
('/_ah/start', StartHandler)
], debug=True)
似乎僅在使用gcloud preview app run
時才生成gcloud preview app run
而不是我正在使用的dev_appserver.py
。
但是,我無法修改Dockerfile並運行自定義托管VM。 但這是一個單獨的錯誤(與--custom_entrypoint
相關)。
糟糕的文檔和支持助長了整個局勢的噩夢。 對其他正在考慮使用Google App Engine的開發人員的警告。
事實證明,在您的應用程序中擴展Dockerfile不能按照文檔( Link )中所聲稱的那樣工作。 實際上,如果存在Dockerfile,則會出現以下錯誤:
"ERROR: (gcloud.preview.app.deploy) There is a Dockerfile in the current directory, and the runtime field in /[...]/app.yaml is currently set to [runtime: python27]. To use your Dockerfile to build a custom runtime, set the runtime field in [...]/app.yaml to [runtime: custom]. To continue using the [python27] runtime, please omit the Dockerfile from this directory"
我能夠使用自定義Dockerfile的唯一方法是使用自定義運行時。
Google有一個非常好的GitHub示例,可以使用自定義Python運行時( 此處 )將Django部署到托管VM。
由於您使用的是自定義運行時,因此您必須自己實施運行狀況檢查。 但是,如果您需要訪問Google API,則Google提供了有關如何在GitHub上進行設置的示例( 此處 )。
要獲得實施健康檢查或與Google API集成的幫助,您可以按照Google Compute Engine入門系列教程( 此處 )進行操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.