golang 項目框架開發

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
}

Application_Example

注意,需要你提供基本的配置文件內容如下

app:
  name: your-app-name
  
log: 
  filename: /tmp/your-app-name.log
  maxSize: 500
  maxBackups: 3
  maxAge: 3
  level: debug
  stdout: true

限於本人能力有限,歡迎各位的issues ✊

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章