快速开始
Go 编译器安装
-
安装 Go 多版本管理器(推荐)
- Linux/macOS 下自动安装 Go 多版本管理器(适用于 bash、zsh)
$ curl -sSL https://raw.githubusercontent.com/voidint/g/master/install.sh | bash $ cat << 'EOF' >> ~/.bashrc # 可选。检查g别名是否被占用 if [[ -n $(alias g 2>/dev/null) ]]; then unalias g fi EOF $ source "$HOME/.g/env"- Windows 下自动安装 Go 多版本管理器(适用于 pwsh)
$ iwr https://raw.githubusercontent.com/voidint/g/master/install.ps1 -useb | iex -
安装 Go 编译器
$ g install 1.25.0
工具链安装
-
安装 protobuf 编译器(使用场景:开发 mesh 微服务、使用 protobuf 作为与客户端通信的协议)
- Linux, using apt or apt-get, for example:
$ apt install -y protobuf-compiler $ protoc --version # Ensure compiler version is 3+- MacOS, using Homebrew:
$ brew install protobuf $ protoc --version # Ensure compiler version is 3+- Windows, download from Github:
-
安装 protobuf go 代码生成工具(使用场景:开发 mesh 微服务、使用 protobuf 作为与客户端通信的协议)
$ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest -
安装 grpc 代码生成工具(使用场景:使用 GRPC 组件开发 mesh 微服务)
$ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest -
安装 rpcx 代码生成工具(使用场景:使用 RPCX 组件开发 mesh 微服务)
$ go install github.com/rpcxio/protoc-gen-rpcx@latest -
安装 gorm dao 代码生成工具(使用场景:使用 GORM 作为数据库 orm)
$ go install github.com/dobyte/gorm-dao-generator@latest -
安装 mongo dao 代码生成工具(使用场景:使用 MongoDB 作为数据库 orm)
$ go install github.com/dobyte/mongo-dao-generator@latest
Docker 环境安装
- 安装 docker
进入 docker 官网下载最新版 docker 安装包安装
- 安装 docker-compose
- Linux
$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.36.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose-
MacOS, docker desktop 中已内置 docker-compose,故无须单独安装
-
Windows, download from Github:
- 安装开发组件
$ cd ./docker
$ docker-compose up -d- docker-compose.yaml
version: "3"
services:
mysql:
image: mysql:5.7
container_name: dev-mysql
platform: linux/x86_64
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
ports:
- '3306:3306'
volumes:
- ./mysql:/var/lib/mysql
networks:
cluster-network:
ipv4_address: 192.168.10.2
redis:
image: openeuler/redis:6.2.7-oe2203lts
container_name: dev-redis
platform: linux/x86_64
restart: always
environment:
- ALLOW_EMPTY_PASSWORD=yes
ports:
- '6379:6379'
networks:
cluster-network:
ipv4_address: 192.168.10.3
etcd:
image: openeuler/etcd:3.6.4-oe2403sp1
container_name: dev-etcd
platform: linux/x86_64
restart: always
environment:
- ALLOW_NONE_AUTHENTICATION=yes
- ETCD_ADVERTISE_CLIENT_URLS=http://etcd-server:2379
ports:
- '2379:2379'
- '2380:2380'
networks:
cluster-network:
ipv4_address: 192.168.10.4
consul:
image: openeuler/consul:1.22.0-oe2403sp2
container_name: dev-consul
platform: linux/x86_64
restart: always
ports:
- '8500:8500'
networks:
cluster-network:
ipv4_address: 192.168.10.5
kafka:
image: openeuler/kafka:4.1.0-oe2403sp1
container_name: dev-kafka
platform: linux/x86_64
restart: always
ports:
- '9092:9092'
networks:
cluster-network:
ipv4_address: 192.168.10.6
nats:
image: nats:2.12.2
container_name: dev-nats
platform: linux/x86_64
restart: always
ports:
- '4222:4222'
- '6222:6222'
- '8222:8222'
networks:
cluster-network:
ipv4_address: 192.168.10.7
nacos:
image: nacos/nacos-server:v2.5.1
container_name: dev-nacos
platform: linux/x86_64
restart: always
environment:
- PREFER_HOST_MODE=hostname
- MODE=standalone
- NACOS_AUTH_IDENTITY_KEY=serverIdentity
- NACOS_AUTH_IDENTITY_VALUE=security
- NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
volumes:
- ./nacos/logs:/home/nacos/logs
- ./nacos/conf/application.properties:/home/nacos/conf/application.properties
ports:
- '8848:8848'
- '9848:9848'
networks:
cluster-network:
ipv4_address: 192.168.10.8
mongo:
image: mongo:4.4-rc-focal
container_name: dev-mongo
platform: linux/x86_64
restart: always
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=12345678
ports:
- '27017:27017'
volumes:
- ./mongo/data:/data/db
networks:
cluster-network:
ipv4_address: 192.168.10.9
memcached:
image: openeuler/memcached:latest
container_name: dev-memcached
platform: linux/x86_64
restart: always
ports:
- '11211:11211'
networks:
cluster-network:
ipv4_address: 192.168.10.10
networks:
cluster-network:
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.10.0/24