Hallo Welt mit gRPC / go in Docker-Umgebung

Einführung

Ich fing an zu lernen. Ich habe angefangen, gRPC zu studieren. Zuerst habe ich es versucht. Ich bin mehr gestolpert als ich erwartet hatte, also werde ich ein Protokoll führen. Quick start – gRPC

Ich bin mir nicht sicher über go oder gRPC.

Die Umgebung hat dieses Docker-Image verwendet. Als Name habe ich es getan, weil ich es wollte. grpc/go - Docker Hub

Docker Ich habe es so gestartet. Docker Ich bin mir nicht sicher.

docker pull grpc/go
docker run --name grpc-go -it grpc/go /bin/bash 

Quick Start In der Reihenfolge gemäß Schnellstart ausführen.

Wenn Sie den folgenden Befehl ausführen,

$ go run greeter_server/main.go

Ich bekomme so einen Fehler.

cannot find package "golang.org/x/net/http2"

Und

undefined: "github.com/golang/protobuf/proto".ProtoPackageIsVersion4

Ich gebe etwas ein, das notwendig erscheint, und setze es mit dem folgenden Befehl wieder ein.

go get golang.org/x/sys/unix
go get golang.org/x/net/http2
go get google.golang.org/genproto/googleapis/rpc/status
go get -u github.com/golang/protobuf/proto

Der letzte ahmte das Kopieren und Einfügen nach und fügte -u hinzu, aber ich bin mir nicht sicher. Es sieht aus wie ein Update.

go - The Go Programming Language

The -u flag instructs get to update modules providing dependencies of packages named on the command line to use newer minor or patch releases when available. Continuing the previous example, 'go get -u A' will use the latest A with B v1.3.1 (not B v1.2.3). If B requires module C, but C does not provide any packages needed to build packages in A (not including tests), then C will not be updated.

Als ich den obigen Fehler bekam, habe ich den folgenden Befehl verwendet, um ihn zu löschen und wieder einzufügen, sodass ich die Version nicht herausfinden konnte. Ich möchte es bald verstehen. Ich habe rm gemacht, aber übrigens habe ich die Binärdatei nicht gelöscht. Was ist passiert? Wurde es überschrieben?

rm -rf /go/src/github.com/golang/protobuf/proto
rm -rf /go/src/google.golang.org/grpc/
git clone https://github.com/grpc/grpc-go

Als ein Fehler auftrat, habe ich hier darauf hingewiesen. Go Frequently Asked Questions  |  Protocol Buffers  |  Google Developers

Mit der obigen Korrespondenz arbeiteten der erste Server und Client. Danach, als ich SayHello Again machte, wurde mir gesagt, dass es undefiniert sei.

$ go run greeter_client/main.go 
# command-line-arguments
greeter_client/main.go:59:12: c.SayHelloAgain undefined (type helloworld.GreeterClient has no field or method SayHelloAgain)

Das pb" google.golang.org/grpc/examples/helloworld/helloworld " in main.go war verdächtig. Wenn Sie also dem Pfad folgen, finden Sie/ go / src / google.golang.org Es gab ein alteshelloworld.proto in / grpc / examples / helloworld / helloworld.

Ich war mir nicht sicher, was ich tun sollte, aber ich habe das modifizierte ~ / grpc-go / examples / helloworld / helloworld auf den obigen Pfad überschrieben. Als ich Server und Client erneut ausführte, funktionierte es wie erwartet. Vorerst war es gut. "Hallo Welt" ist fertig.

Umgebung

Die Umgebung, als es sich schließlich bewegte, ist so. Ich bin mir nicht sicher, wie ich die Version überprüfen soll, die ich mit "go get" eingegeben habe. GOPATH ist ein Bild von Docker Pull und ist standardmäßig enthalten. .bashrc funktioniert auch wenn es leer ist.

# go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/go"
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build743505095=/tmp/go-build -gno-record-gcc-switches"
# go version
go version go1.10.4 linux/amd64
# protoc --version
libprotoc 3.6.0

Schließlich

Ich konnte so etwas wie Hello World machen. Es gibt so viele Dinge, die ich nicht verstehe, also lasst uns lernen, während wir Stück für Stück lernen.

Recommended Posts

Hallo Welt mit gRPC / go in Docker-Umgebung
Hallo, Welt mit Docker
Hallo Welt in GO-Sprache
Versuchen wir es mit gRPC mit Go und Docker
Hallo Welt mit allen Funktionen der Go-Sprache
Hallo Welt mit ctypes
Erste Python ① Umgebungskonstruktion mit Pythonbrew & Hello World !!
Hallo Welt auf Flasche
Um Japanisch mit Python in der Docker-Umgebung verwenden zu können
Zeichne Hallo Welt mit mod_wsgi
Hallo Welt mit Flask + Hamlish
Bis hallo Welt mit Zappa
Bereiten Sie die Python3-Umgebung mit Docker vor
Python beginnend mit Hallo Welt!
Lass uns "Hello World" in 40 Sprachen machen! !!
Führen Sie Eclipse in einer Docker-Umgebung (noVNC) aus.
Hallo Welt! Mit virtueller CAN-Kommunikation
Erstellen Sie mit Docker eine Go-Umgebung
Tipps zum Ausführen Gehen Sie mit Docker
Erstellen Sie eine MySQL + Python-Umgebung mit Docker
[Hinweis] Hallo Weltausgabe mit Python
cout << "Hallo Welt! \ N" in Python
Hallo Welt mit Flasche [Passendes Memo]
Code: 2 "Hello World" im "Choregraphe-Python-Skript"
Hallo Welt! Von QPython mit Braincrash
Erstellen Sie die Entwicklungsumgebung von Django mit Docker neu! !! !! !!
Hallo Welt- und Gesichtserkennung mit opencv-python 4.2
Erstellen Sie mit Docker eine Jupyter Lab (Python) -Umgebung
Ich wollte ein Jupyter-Notebook mit Docker in einer Pip-Umgebung (Opticspy) verwenden.
[AWS] Erstellen Sie mit CodeStar eine Python Lambda-Umgebung und führen Sie Hello World aus
Verwenden von venv in der Windows + Docker-Umgebung [Python]
Hallo Welt mit Raspberry Pi + Minecraft Pi Edition
Leiten Sie HTTP mit Elastic Beanstalk in einer Go / Java SE-Umgebung zu HTTPS um
Holen Sie sich mit Docker eine lokale Umgebung für DynamoDB
Erstellen Sie mit Docker eine Python + uWSGI + Nginx-Umgebung
Ich habe Umgebungsvariablen in Docker festgelegt und in Python angezeigt.
Re: Heroku Leben beginnt mit Flask von Null - Umwelt und Hallo Welt -
Mit Docker durchgeführte Umgebungswartung (Ich möchte GrADS in Python nachbearbeiten
[Linux] Erstellen einer Jenkins-Umgebung mit Docker
Hallo Welt
Hallo Welt nicht localhost in Django
Starten Sie die Umgebung mit LineBot + Heroku + Docker + Python
Einführung in Docker Erstellen einer Ubuntu-Umgebung in Ubuntu
So zeigen Sie Hello World in Python an
Verwenden Sie WebDAV in einer Portable Docker-Umgebung
Erstellen Sie mit Docker eine Umgebung aus NGINX + NGINX Unit + MySQL
Hallo Welt! Von QPython mit Brainfu * k
Einführung von sip-4.14 in der Python3.2.2-Umgebung mit MacOS 10.7.4
[Linux] Aufbau einer Docker-Umgebung mit Amazon Linux 2
Beim Versuch, Hello World in der Sprache Go auszuführen, ist eine Fehlermeldung aufgetreten
[Linux] SMTP-Einstellungsmethode in der Linux-Umgebung (Host) beim Senden von Benachrichtigungsmail mit Docker
Hallo Welt- und Gesichtserkennung mit OpenCV 4.3 + Python
Hinweis: Bereiten Sie die Umgebung von CmdStanPy mit Docker vor