Code samples for the Go microservice blog series
- 2019-07-27: Total rewrite of Go code, including introducing Makefiles for build and a docker-compose file for deployment on Docker Swarm.
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.
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 swarm init --advertise-addr $(docker-machine ip swarm-manager-0)
docker network create --driver overlay my_network
docker swarm join --token SWMTKN-1-5njothki0tww7gestuh309qgrnr6r357phlsn7ue0r8qmlqnla-181tl1rfou16vv3e7nxrk4ra3 192.168.99.100:2377
You need go 1.13 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.
Deploy using:
make deploy
The make target uses docker stack deploy behind the scenes.
Here's some minor stuff worth remembering.
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
(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;
// 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;
BUILD THE KEYSTORE To use encrypted properties later on, we’ll configure the config server with a self-signed certificate. (You’ll need to have keytool on your PATH).
In the /goblog/support/config-server/ folder, run:
keytool -genkeypair -alias goblogkey -keyalg RSA -dname "CN=Go Blog,OU=Unit,O=Organization,L=City,S=State,C=SE" -keypass changeme -keystore server.jks -storepass letmein -validity 730
This should create server.jks. Feel free to modify any properties/passwords, just remember to update application.yml accordingly!
shell sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=https://www.daocloud.io/mirror |g" /var/lib/boot2docker/profile
docker-machine create -d virtualbox
--engine-env HTTP_PROXY=http://example.com:8080
--engine-env HTTPS_PROXY=https://example.com:8080
--engine-env NO_PROXY=example2.com
default