Ya hemos hablado de zero el framework de go para hacer microservicios. Ahora vamos a bajar las herramientas para trabajar con él.
Primero, tenemos que tener go instalado. Yo tengo la versión 1.22.0
$ go version
go version go1.22.0 linux/amd64
Después de la versión 1.11, se recomienda que el valor GO111MODULE se establezca en on para evitar errores innecesarios.
$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct
$ go env GO111MODULE
on
$ go env GOPROXY
https://goproxy.cn,direct
goctl es una herramienta incorporada de go-zero que es importante para aumentar la eficiencia del desarrollo, generar código, documentos, implementar k8s yaml, dockerfile, etc.
$ go install github.com/zeromicro/go-zero/tools/goctl@latest
go: downloading github.com/gookit/color v1.5.4
go: downloading github.com/withfig/autocomplete-tools/integrations/cobra v1.2.1
go: downloading github.com/spf13/cobra v1.8.0
...
$ goctl -version
goctl version 1.6.2 linux/amd64
Ahora tenemos que installar docker. Yo ya tengo docker instalado por lo tanto siguo:
$ sudo docker pull kevinwan/goctl
$ sudo docker run --rm -it -v `pwd`:/app kevinwan/goctl goctl --help
Y si todo anda bien hacemos :
$ sudo docker run --rm -it -v `pwd`:/app kevinwan/goctl:latest goctl --version
goctl version 1.3.5 linux/amd64
protoc es una herramienta para generar código basado en archivos proto, este genern código en múltiples lenguajes como C++, Java, Python, Go, PHP, etc. para nuestros servicios gRPC. Lo tenemos que instalar, en mi caso yo lo tenia instalado y lo sé porque hice :
$ goctl env check --install --verbose --force
[goctl-env]: preparing to check env
[goctl-env]: looking up "protoc"
[goctl-env]: "protoc" is installed
[goctl-env]: looking up "protoc-gen-go"
[goctl-env]: "protoc-gen-go" is installed
[goctl-env]: looking up "protoc-gen-go-grpc"
[goctl-env]: "protoc-gen-go-grpc" is installed
[goctl-env]: congratulations! your goctl environment is ready!
Y ahora por fin, vamos a crear nuestro proyecto go-zero!!
Creamos el proyecto:
$ mkdir myapp && cd myapp
$ go mod init myapp
$ go get github.com/zeromicro/go-zero@latest
go: added github.com/zeromicro/go-zero v1.6.2
Y Listo!!