5

Sono nuovo a Google cloud e sto cercando di eseguire la mia prima distribuzione su di esso. La mia prima implementazione è un progetto Ruby on Rails.Ogni volta che provo a distribuire ottengo - (gcloud.preview.app.deploy) Risposta all'errore: [4] DEADLINE_EXCEEDED

Fondamentalmente sto seguendo this guide in the google cloud documentation. L'unica differenza è che sto usando il mio progetto invece del progetto 'ciao mondo' che forniscono.

Questo è il mio file app.yaml

runtime: custom 
vm: true 
entrypoint: bundle exec rackup -p 8080 -E production config.ru 
resources: 
    cpu: 0.5 
    memory_gb: 1.3 
    disk_size_gb: 10 

Quando vado al mio directory del progetto e corro gcloud preview app deploy inizia l'implementazione, ma sembra finalmente time out. Dà l'errore (gcloud.preview.app.deploy) Error Response: [4] DEADLINE_EXCEEDED.

Facendo qualche ricerca ho trovato in esecuzione gcloud preview app deploy con --verbosity debug fornisce informazioni extra di debug ma non mi aiuta a trovare che cosa sta causando il timeout.

Ecco l'ultimo blocco del registro della console.

Bundle complete! 35 Gemfile dependencies, 102 gems now installed. 
Bundled gems are installed into ./vendor/bundle. 
Post-install message from rdoc: 
Depending on your version of ruby, you may need to install ruby rdoc/ri data: 

<= 1.8.6 : unsupported 
= 1.8.7 : gem install rdoc-data; rdoc-data --install 
= 1.9.1 : gem install rdoc-data; rdoc-data --install 
>= 1.9.2 : nothing to do! Yay! 
Post-install message from compass: 
    Compass is charityware. If you love it, please donate on our behalf at http://umdf.org/compass Thanks! 
DEBUG: Operation [operations/build/guidir-1286/MmFkZjNmOGYtZDhhZi00NTJmLTk0YWEtMmQzMjBmM2JkOTg2OlVT] complete. Result: { 
    "metadata": { 
     "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata", 
     "build": { 
      "finishTime": "2016-04-20T01:55:44.961635Z", 
      "status": "TIMEOUT", 
      "timeout": "600.000s", 
      "projectId": "guidir-1286", 
      "id": "2adf3f8f-d8af-452f-94aa-2d320f3bd986", 
      "source": { 
       "storageSource": { 
        "object": "us.gcr.io/guidir-1286/appengine/default.20160420t110030:latest", 
        "bucket": "staging.guidir-1286.appspot.com" 
       } 
      }, 
      "steps": [ 
       { 
        "args": [ 
         "us.gcr.io/guidir-1286/appengine/default.20160420t110030:latest" 
        ], 
        "name": "gcr.io/cloud-builders/dockerizer" 
       } 
      ], 
      "startTime": "2016-04-20T01:45:43.216420Z", 
      "logsBucket": "staging.guidir-1286.appspot.com", 
      "images": [ 
       "us.gcr.io/guidir-1286/appengine/default.20160420t110030:latest" 
      ], 
      "createTime": "2016-04-20T01:45:41.861657Z" 
     } 
    }, 
    "done": true, 
    "name": "operations/build/guidir-1286/MmFkZjNmOGYtZDhhZi00NTJmLTk0YWEtMmQzMjBmM2JkOTg2OlVT", 
    "error": { 
     "message": "DEADLINE_EXCEEDED", 
     "code": 4 
    } 
} 
DEBUG: (gcloud.preview.app.deploy) Error Response: [4] DEADLINE_EXCEEDED 
Traceback (most recent call last): 
    File "/Users/Robert/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 654, in Execute 
    result = args.cmd_func(cli=self, args=args) 
    File "/Users/Robert/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py", line 1401, in Run 
    resources = command_instance.Run(args) 
    File "/Users/Robert/google-cloud-sdk/lib/surface/preview/app/deploy.py", line 507, in Run 
    config_cleanup) 
    File "/Users/Robert/google-cloud-sdk/lib/googlecloudsdk/api_lib/app/deploy_command_util.py", line 195, in BuildAndPushDockerImages 
    storage_client) 
    File "/Users/Robert/google-cloud-sdk/lib/googlecloudsdk/api_lib/app/deploy_command_util.py", line 245, in _BuildImagesWithCloudBuild 
    image.tag, cloudbuild_client) 
    File "/Users/Robert/google-cloud-sdk/lib/googlecloudsdk/api_lib/app/cloud_build.py", line 181, in ExecuteCloudBuild 
    retry_callback=log_tailer.Poll) 
    File "/Users/Robert/google-cloud-sdk/lib/googlecloudsdk/api_lib/app/api/operations.py", line 69, in WaitForOperation 
    encoding.MessageToPyValue(completed_operation.error))) 
OperationError: Error Response: [4] DEADLINE_EXCEEDED 
ERROR: (gcloud.preview.app.deploy) Error Response: [4] DEADLINE_EXCEEDED 

Questo è il più lontano il suo passato, ma a volte la sua metà strada attraverso l'installazione delle gemme prima del timeout e altre volte non ha nemmeno ottenere fino installando le gemme.

Come posso evitare che ciò si verifichi?

risposta

6

Esiste un timeout predefinito di 10 minuti per le build di Docker (il meccanismo con cui le build di runtime: custom App Engine funzionano). È possibile aumentare questo eseguendo gcloud config set app/cloud_build_timeout [NUMBER OF SECONDS].

Si potrebbe anche aggirare eseguendo l'apparecchio da soli costruire:

docker build . -t gcr.io/myapp/myimage 
gcloud docker push gcr.io/myapp/myimage 
gcloud preview app deploy app.yaml --image-url=gcr.io/myapp/myimage 

Tuttavia, in generale, il vostro Docker build non dovrebbe essere prendendo così a lungo. Di solito è meglio avere un'immagine di base con tutte le dipendenze già integrate, e solo la build finale derivare da quell'immagine e installare la tua app. In questo modo, le tue build saranno molto più veloci.

+0

Grazie per l'aiuto non ho ricevuto l'errore 'Risposta errore: [2] Build fallito; controlla i log di compilazione per i dettagli quando eseguo i moduli di app di anteprima di gcloud get-logs mymodule --version = 1' per ottenere i registri non riesco a trovare dove il file di registro è stato salvato. Sai dove sarebbe? – Rob