Am o aplicație construită ca o imagine Docker care funcționează corect la nivel local, dar eșuează în Google Cloud Run cu „eroare de conectare în amonte sau deconectare/resetare înainte de anteturi. motivul resetare: eroare de protocol”
Aplicația ascultă pe 0.0.0.0:8080 și nu necesită autentificare.Îl rulez în Docker local cu
docker run --rm --name myapp -p 8080:8080 myapp:1.0
Cu curl local, primesc un răspuns de succes pe /
$ curl -v localhost:8080
* Încerc ::1...
* TCP_NODELAY setat
* Conectat la portul localhost (::1) 8080 (#0)
> GET / HTTP/1.1
> Gazdă: localhost:8080
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/json
< Variază: Origine
< Data: sâmbătă, 24 iulie 2021 13:54:11 GMT
< Lungimea conținutului: 2
<
* Conexiunea #0 la gazda localhost a rămas intactă
OK* Închiderea conexiunii 0
Am implementat acest lucru în Google Cloud Run ca serviciu și, când fac prima solicitare, văd jurnalul de ieșire din aplicația mea în jurnalele de rulare în cloud care arată că a pornit și ascultă pe portul 8080.
Cu toate acestea, o cerere eșuează
„Eroare de conectare în amonte sau deconectare/resetare înainte de anteturi. Motivul resetare: eroare de protocol”
Ieșire completă din curl -v https://cloudrun-srv-stuff.a.run.app/ este după cum urmează
* Se încearcă 216.239.36.53...
* TCP_NODELAY setat
* Conectat la cloudrun-srv-lz5wvvl32a-ez.a.run.app (216.239.36.53) portul 443 (#0)
* ALPN, oferind h2
* ALPN, oferind http/1.1
* setați cu succes locațiile de verificare a certificatelor:
* CAfile: /etc/ssl/cert.pem
CApath: niciunul
* TLSv1.2 (OUT), strângere de mână TLS, salut client (1):
* TLSv1.2 (IN), strângere de mână TLS, salut server (2):
* TLSv1.2 (IN), strângere de mână TLS, Certificat (11):
* TLSv1.2 (IN), strângere de mână TLS, schimb de chei de server (12):
* TLSv1.2 (IN), TLS handshake, Server terminat (14):
* TLSv1.2 (OUT), TLS handshake, Schimb cheie client (16):
* TLSv1.2 (OUT), TLS schimbă cifra, Schimbă specificația cifrului (1):
* TLSv1.2 (OUT), TLS handshake, Terminat (20):
* TLSv1.2 (IN), schimbarea cifrului TLS, modificarea specificației cifrului (1):
* TLSv1.2 (IN), strângere de mână TLS, Terminat (20):
* Conexiune SSL folosind TLSv1.2 / ECDHE-ECDSA-CHACHA20-POLY1305
* ALPN, server acceptat să utilizeze h2
* Certificat de server:
* subiect: C=US; ST=California; L=Vedere la munte; O=Google LLC; CN=*.a.run.app
* data începerii: 28 iunie 01:08:46 2021 GMT
* data expirării: 20 septembrie 01:08:45 2021 GMT
* subjectAltName: gazda „cloudrun-srv-stuff.a.run.app” a corespuns certificatului „*.a.run.app”
* emitent: C=US; O=Servicii de încredere Google; CN=GTS CA 1O1
* Verificare certificat SSL ok.
* Utilizând HTTP2, serverul acceptă utilizarea multiplă
* Starea conexiunii a fost schimbată (HTTP/2 confirmat)
* Copierea datelor HTTP/2 din bufferul de flux în bufferul de conexiune după actualizare: len=0
* Folosind ID-ul fluxului: 1 (mâner ușor 0x7f83b4810a00)
> GET / HTTP/2
> Gazdă: cloudrun-srv-stuff.a.run.app
> User-Agent: curl/7.64.1
> Accept: */*
>
* Starea conexiunii a fost schimbată (MAX_CONCURRENT_STREAMS == 100)!
< HTTP/2 502
< lungimea conținutului: 87
< tipul de conținut: text/plain
< data: sâmbătă, 24 iulie 2021 13:58:13 GMT
< server: Google Frontend
< x-cloud-trace-context: 1370fab1a02839b367048f855593cbef/5890123523738625787;o=1
< alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
<
Care sunt următorii pași în depanarea acestui lucru?