Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

gopher-lego/ginger

Repository files navigation

ginger

Directory structure for sample golang project development.

There are several ways to use it.

Run debug mode directly

$ vi app.debug.json
$ go run main.go

Run debug mode with live reload

Think about this tool ↓

  1. install air: https://github.com/cosmtrek/air#via-go-install
  2. faq: https://github.com/cosmtrek/air#command-not-found-air-or-no-such-file-or-directory

Deploy release mode directly

# Update setting
$ cp app.mode.json.example app.release.json
$ vi app.release.json
# Build & distribute
$ export GIN_MODE=release
$ "go build && ./ginger" OR "go run main.go"
# Optional
$ scp ginger xx@xx.xx.xx.xx:/dist/

Deploy & Run release with docker locally

$ vi setting/app.release.json
$ dkc -f docker-compose-from-src.yml up -d --build --force-recreate

Deploy in CI/CD way (Github Actions)

# Update and push to release/prod branch trigger actions
$ vi .github/workflows/go.yml
# On remote server
$ cd gingerApi/dist
$ dkc -f docker-compose-from-dist.yml up -d --build --force-recreate

Preset features

Support global CORS middleware.

Support global Request Rate limit middleware by limiter.

Support config set by Viper in config/

Support production ready Docker environment out of box.

Support database/migrations with golang-migration

Development workflow

main.go ->
route/api.go ->
	app/http/xx.go
	app/request/xxx_request.go
	app/repository/xxx_repo.go <- app/model/xxx.go
				 <- config/database.go

Derived projects example

accountserve-go

orderserve-go

Thirdparty pkg

gorm

Official example:

$ go get -u gorm.io/gorm
$ go get -u gorm.io/driver/mysql
$ go get -u gorm.io/driver/sqlite

https://gorm.io/zh_CN/docs/models.html

https://gorm.io/zh_CN/docs/connecting_to_the_database.html

https://gorm.io/zh_CN/docs/index.html#%E5%AE%89%E8%A3%85

golang-migrate

CLI install: https://github.com/golang-migrate/migrate/tree/master/cmd/migrate

MySQL driver: https://github.com/golang-migrate/migrate/tree/master/database/mysql

CLI example

$ migrate create -ext sql -dir database/migrations -seq create_orders_table
$ migrate -path database/migrations -database "mysql://root:123456@(127.0.0.1:33056)/testdb?multiStatements=true" up
$ migrate -path database/migrations -database "mysql://root:123456@(127.0.0.1:33056)/testdb?multiStatements=true" version
$ migrate -path database/migrations -database "mysql://root:123456@(127.0.0.1:33056)/testdb?multiStatements=true" force <2>
$ migrate -path database/migrations -database "mysql://root:123456@(127.0.0.1:33056)/testdb?multiStatements=true" down

uuid

https://github.com/google/uuid

https://godoc.org/github.com/google/uuid

About

Working with Gin-framework just like Laravel-framework skeleton.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /