About
Self-learning Golang project.
Store and managing settings for microservices.
Used packages
backend:
Golang
frontend
Vue
Develop
Recommended IDE - VSCode.
Environment for project in ./.vscode/launch.json.
For another IDE's don't forget set up env variables:
"SettingsServicePort": "9000",
"SettingsServiceDbConnectionString": "postgres://pg:1@localhost:5432/servicesSettings_db",
"SettingsServiceEnv": "dev"
Requiremens
- Go
- Node
Recommended extentions for VSCode
- Docker
- Go
- npm Intellisense
- REST Client
- TypeScript Vue Plugin (Volar)
- Volar
! disable Vetur
Debug & Test
Debug backend
-
Install golang swag utility:
go install github.com/swaggo/swag/cmd/swag@latest
-
Install dependencies:
go get .
-
Run test database docker image:
docker compose up -d ./.test/database/docker-compose.yml
-
After changes regenerate swagger files:
swag init -g ./cmd/SettingsService/main.go -o ./docs
-
Set breakpoints and press F5
Debug frontend
-
Install node
-
Move to ./web/src
-
Install dependencies npm install
-
npm run dev
Run in Docker
make front
docker build --tag 'settingsservice' .
docker run -d -p 9000:9000 --name 'SettingsService' 'settingsservice'
or prepare image with tag settingsservice
make image
or run container with tag settingsservice and name SettingsService
make docker
Production
build with remove the symbol and debug info:
go build -o=SettingsService -ldflags "-s -w" ./cmd/SettingsService
(cd ./web/src/ && npm install && npm run build)
where:
-w turns off DWARF debugging information
-s turns off generation of the Go symbol table
or use Makefile:
make help
For non-docker environment don't forget set up env variables:
"SettingsServicePort": "9000",
"SettingsServiceDbConnectionString": "postgres://pg:1@localhost:5432/servicesSettings_db"
TO DO
- healthchecks
- Add push mechanism for setting's updates
- Add auth
- Add unit-tests
- Try another DB, for example mongo
- fix config. How do it best? Now ENV
- Write help instructions
History
- Appy project layout
- makefile
- versioning
- SPA
- fix results of stat analyst (except swagger comments)
- dockerize