GIthub:https://github.com/feiquan123/go-program-framework
go-program-framework
⭐️⭐️⭐️⭐️⭐️
go-program-framework
是參考 go
源碼的工程架構以及本人的開發經驗建立的,你可以作為你開發GO
項目的一個結構參考,我也會不斷完善工具包和項目的✊✊
工程結構
├── bin //編譯后的可執行文件
├── configs // 配置文件
├── doc // 文檔,可用於`godoc`瀏覽
├── docker // DockerFile
├── internal // 私人文件
├── logs // 日志
├── scripts // 腳本 如:py,js.sh,bat...
└── src // go 的源碼
├── app // app 是組裝服務
│ └── ops // 不同的app版本
├── cmd // go build 的時的直接目錄
│ ├── client // 客戶端
│ └── server // 服務端
├── internal // go 的私有包,外部不可導入,並且`godoc`不可查看
└── pkg // 工具包
├── app // 定義`application`的接口
│ └── testdata // 測試數據
├── config // 讀取配置文件
├── log // 創建日志對象
└── utils // 基礎工具包
重命名項目名
./scripts/rename.sh your-appname
Makefile
make help
Choose a command run in go-program-framework:
compile Compile the binary of server and client
build-server build server
build-client build client
build build client and server
clean-server clean server
clean-client clean client
clean clean server and client
start-server start server
start-client start client
godoc start godoc server
wire go wire
di-clean docker image clean
d-clean docker clean
d-build docker build
md rename readme
make godoc
make godoc
將會在本地運行http server,http://127.0.0.1:6060
. 注意此時你可以訪問到
http://127.0.0.1:6060/pkg/ // 依賴的包名, ./src/internal 不可訪問 http://127.0.0.1:6060/doc/ // 就是 ./doc/
DockerFile
為了可以在容器中下拉依賴,可以將本地的.ssh
文件復制到容器中進行構建.但是這樣構建完后鏡像容量過大且存在代碼泄露問題,我們可以使用多階段部署來解決這些問題
pkg 工具包的擴展
pkg 包中定義了Server
接口,只要你的擴展包實現了這些接口,那你就可以無限的注冊服務,使用wire
來自動化進行依賴注入,並在收到退出信號后平滑退出應用
// Server define register server interface type Server interface { Desc() string Start() error Stop() error }
注意,需要你提供基本的配置文件內容如下
app: name: your-app-name log: filename: /tmp/your-app-name.log maxSize: 500 maxBackups: 3 maxAge: 3 level: debug stdout: true
限於本人能力有限,歡迎各位的issues ✊