Skip to content

qzq1111/goblog

 
 

Repository files navigation

goblog

Code samples for the Go microservice blog series

Changelog

  • 2019-07-27: Total rewrite of Go code, including introducing Makefiles for build and a docker-compose file for deployment on Docker Swarm.

Some URLs to remember

Turbine stream URL: http://192.168.99.100:8282/turbine.stream?cluster=swarm Hystrix stream URL: http://accountservice:8181/hystrix.stream?cluster=swarm

Make sure Turbine doesn't crash on startup due to AMQ connection problem.

Setting up Docker Swarm cluster

docker-machine create --driver virtualbox --virtualbox-cpu-count 4 --virtualbox-memory 6000 --virtualbox-disk-size 30000 swarm-manager-0
eval "$(docker-machine env swarm-manager-0)"
docker network create --driver overlay my_network
docker swarm init --advertise-addr 192.168.99.100
Adding a worker node
docker swarm join --token SWMTKN-1-5njothki0tww7gestuh309qgrnr6r357phlsn7ue0r8qmlqnla-181tl1rfou16vv3e7nxrk4ra3 192.168.99.100:2377

Building

You need Go 1.12 or later installed on your system to build from source.

Builds are performed using Makefile(s). In the root /goblog folder:

make build

One can also run all tests, format code using makefile targets.

Deploying

Deploy using:

make deploy

The make target uses docker stack deploy behind the scenes.

Nice to haves

Here's some minor stuff worth remembering.

Running the CockroachDB client

Find a container running the cockroachdb/cockroach container using docker ps and note the container ID. Then we'll use docker exec to launch the SQL CLI:

> docker exec -it 10f4b6c727f8 ./cockroach sql --insecure

Create user and database for Cockroach

(this is possibly broken, from part 16 onwards the initial DB setup is performed using the docker stack)

Originally from: cockroachdb/cockroach#19826 (comment)

DROP USER IF EXISTS cockroach; \
DROP DATABASE IF EXISTS account CASCADE; \
CREATE DATABASE IF NOT EXISTS account; \
CREATE USER cockroach WITH PASSWORD 'password'; \
GRANT ALL ON DATABASE account TO cockroach;

Releases

No releases published

Packages

No packages published

Languages

  • Go 80.3%
  • Shell 9.3%
  • Makefile 3.8%
  • Dockerfile 2.5%
  • Java 2.1%
  • Scala 2.0%