Hello World avec gRPC / go dans l'environnement Docker

introduction

J'ai commencé à étudier le go. J'ai commencé à étudier le gRPC. Tout d'abord, j'ai essayé ceci. J'ai trébuché plus que ce à quoi je m'attendais, alors je vais garder une trace. Quick start – gRPC

Je ne suis pas sûr de go ou de gRPC.

L'environnement a utilisé cette image de docker. En tant que nom, je l'ai fait parce que je le voulais. grpc/go - Docker Hub

Docker Je l'ai lancé comme ça. Docker, je ne suis pas sûr.

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

Quick Start Exécutez dans l'ordre selon Quick Start.

Lorsque vous exécutez la commande suivante,

$ go run greeter_server/main.go

J'obtiens une erreur comme celle-ci.

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

Et

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

J'ai mis quelque chose qui me semble nécessaire et je l'ai remis avec la commande suivante.

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

Le dernier a imité le copier-coller et a ajouté -u, mais je ne suis pas sûr. Cela ressemble à une mise à jour.

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.

Lorsque j'ai eu l'erreur ci-dessus, j'ai utilisé la commande suivante pour l'effacer et la remettre, donc je n'ai pas pu déterminer la version. Je veux le comprendre bientôt. J'ai fait rm, mais au fait, je n'ai pas supprimé le fichier binaire. Qu'est-il arrivé? At-il été écrasé?

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

Lorsqu'une erreur s'est produite, j'ai fait référence ici. Go Frequently Asked Questions  |  Protocol Buffers  |  Google Developers

Avec la correspondance ci-dessus, le premier serveur et client a fonctionné. Après cela, quand j'ai fait SayHello Again, on m'a dit que c'était indéfini.

$ 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)

Le pb" google.golang.org/grpc/examples/helloworld/helloworld " dans main.go était suspect, donc si vous suivez le chemin, vous trouverez/ go / src / google.golang.org Il y avait un vieuxhelloworld.proto dans / grpc / examples / helloworld / helloworld.

Je ne savais pas quoi faire, mais j'ai écrasé le ~ / grpc-go / examples / helloworld / helloworld modifié par le chemin ci-dessus. Lorsque j'ai exécuté à nouveau le serveur et le client, cela a fonctionné comme prévu. Pour le moment, c'était bien. «bonjour le monde» est terminé.

environnement

L'environnement quand il a finalement déménagé est comme ça. Je ne sais pas comment vérifier la version saisie avec «go get». GOPATH est une image qui était docker pull et a été incluse par défaut. .bashrc fonctionne même s'il est vide.

# 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

finalement

J'ai pu faire quelque chose comme Hello World. Il y a tellement de choses que je ne comprends pas, alors étudions tout en étudiant petit à petit.

Recommended Posts

Hello World avec gRPC / go dans l'environnement Docker
Bonjour le monde avec Docker
Hello World en langue GO
Essayons gRPC avec Go et Docker
Bonjour tout le monde avec toutes les fonctionnalités du langage Go
bonjour le monde avec ctypes
Premier python ① Construction de l'environnement avec pythonbrew & Hello World !!
Bonjour le monde sur flacon
Pour pouvoir utiliser le japonais avec Python dans l'environnement Docker
Dessinez bonjour le monde avec mod_wsgi
Bonjour le monde avec Flask + Hamlish
Jusqu'à bonjour le monde avec zappa
Préparer l'environnement python3 avec Docker
Python commençant par Hello world!
Faisons "Hello World" en 40 langues! !!
Exécuter eclipse dans un environnement Docker (noVNC)
Bonjour tout le monde! Avec la communication CAN virtuelle
Créer un environnement go à l'aide de Docker
Conseils pour exécuter Go avec Docker
Construire un environnement Mysql + Python avec docker
[Note] Sortie Hello world avec python
cout << "Hello, World! \ N" en python
Hello World avec Flask [Mémo approprié]
Code: 2 "Hello World" dans "Choregraphe-Python script"
Hello World! Par QPython avec Braincrash
Reconstruisez l'environnement de développement de Django avec Docker! !! !! !!
Hello World et détection de visage avec opencv-python 4.2
Créer un environnement Jupyter Lab (Python) avec Docker
Je voulais utiliser le notebook jupyter avec docker dans l'environnement pip (opticspy)
[AWS] Créez un environnement Python Lambda avec CodeStar et faites Hello World
Utilisation de venv dans un environnement Windows + Docker [Python]
Bonjour le monde avec Raspberry Pi + Minecraft Pi Edition
Rediriger HTTP vers HTTPS avec Elastic Beanstalk dans l'environnement Go / Java SE
Obtenez un environnement local pour DynamoDB avec Docker
Créer un environnement Python + uWSGI + Nginx avec Docker
J'ai défini des variables d'environnement dans Docker et je les ai affichées en Python.
Re: La vie Heroku commence avec Flask from zero - Environnement et Hello world -
Maintenance de l'environnement réalisée avec Docker (je souhaite post-traiter GrADS en Python
[Linux] Créer un environnement Jenkins avec Docker
Bonjour le monde
Bonjour tout le monde pas localhost à Django
Environnement de lancement avec LineBot + Heroku + Docker + Python
Introduction à docker Création d'un environnement ubuntu dans ubuntu
Comment afficher Hello World en python
Utiliser WebDAV dans un environnement Docker portable
Construire un environnement de NGINX + NGINX Unit + MySQL avec Docker
Hello World! Par QPython avec Brainfu * k
Introduction de sip-4.14 dans l'environnement python3.2.2 avec MacOS 10.7.4
[Linux] Construction de l'environnement Docker avec Amazon Linux 2
J'ai eu une erreur en essayant d'exécuter Hello World en langue Go
[Linux] Méthode de paramétrage SMTP dans l'environnement Linux (hôte) lors de l'envoi d'un e-mail de notification avec Docker
Hello World et détection de visage avec OpenCV 4.3 + Python
Remarque: préparez l'environnement de CmdStanPy avec docker