├── .gitignore ├── .travis.yml └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | #* 3 | *# 4 | .#* 5 | .classpath 6 | .project 7 | .settings 8 | .springBeans 9 | .gradle 10 | build 11 | bin 12 | target 13 | git.properties 14 | .idea 15 | *.iml 16 | .factorypath 17 | *.class 18 | *.jar 19 | *.html 20 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: java 2 | cache: 3 | directories: 4 | - $HOME/.m2 5 | jdk: 6 | - oraclejdk8 7 | sudo: required 8 | services: 9 | - docker 10 | notifications: 11 | slack: teamcarnell:zhTADgjsb7yJ5RPEd7LPNFwI 12 | email: 13 | - carnell28@gmail.com 14 | on_success: always 15 | on_failure: always 16 | env: 17 | global: 18 | - secure: Yrg1adV2irhJnaHhXf8vhR+ExQ2I2pRGqqD4oGK7MnFAklEDROTXHF10VnW9rIMCy3Qw17QUgiBZAXMzDoKn3dRvMHchSG54pRJ6E3UEZVu/Lh/dqu0gSf//rLYpEmoyD1RTU6gwdZx7V29yE1GaAmtK6D4d9EgaM9+UTgO4JdlnHGQm7dAvcgF8H+p/K4G99GVSLPBuIZbA2zBCvNq59AMlJdMUuyKJrKVH9M06Dh1EFETzsvUBHDHsk9fLgUN7kGlZ6mESSmBccNfjOPyqNDkVB40P3mFd5wkHVFdt4MLME01H5xcpRiuFecGntTYi4qKgVAdIpbo7zh0SJS6vcwsflhtNMJkK/M0FIJ7xNYscLvTpWJTNIpTJI6XCn+GAACJ98q0YvvhVOBsUXch7vjWsmJY5yj0DEHWVcLIRg4tdY6Xrrj1vUs3iZMMLoUkVk/fZp0r7irUSAOfWK4++SS4dc68KR9qoTFsEr/HOZc9w/kBqvdRaMoQNmGwOtR5686ari3+SjX0lBfoCrF+Jn4XtNXIEU4c8kP9PeLrEtOOXY8cUkeg60ugaBpXKMRyuxs04QBbrkl9xIlV0sNxi+vQyi7PpnaFWtSkM6kAtTZ1Qoh2R+cwOvo2r4cRe4LvLtZYdvn6cHG9pf+kzWayDKzGoflB1NL3zMcjO7GT1P3s= 19 | - secure: j/iVN/4htMchxyS6V+qCHwVS+N04g2uTVJp1B58X77REhgrI/wY3bAaZRSUF4c5fj6npj4U6zalN79nSlaYSUsg2tGkX3iSkggRyqjf7/K7ZfL+H+ZBtD9sBXEmrsE9ehctQIOMmS47eXo2fd1+yUjZnLcfyhkQqYtZfskpQ9IQIWNI7/edkY3zWvX/Tto/yPpcr7DdEdu4S6RUvQaVO67b+0VQ0+BJmE/cFgDxSgWifv91510TEn77b1eOc0P5C0mfmh/R+A/3OaNtCGu6adrumxKdEV5n4VwWqe6OdNwmszi1oS/RUrxuhm2SLrvNzbqIjD4Oi62CXeLUVhIKBVKM1DBcgaU4a+5/vq9+/qw9bPvlhen1J0ODlkDStu++ycGoR6NPuBDnLLIQqf4TevlQVvkHe0hhaK16AoPJlLDjTEglyjrv/dEA2e/v+GzA/2oKF+DPs9Z35D1SvID7FOIHthnuSI2MHv1BGQRLJbRqo7FnSOiJoPmzqVfrU1ovNZyM2EJVcc+E1B/uP1bYXAIVRX9m2/qQh+Ch4tcR1qTJcQKDChhUdAyhNG6ExLtsBOGiwyoikZ5jbIg7K2atJvyQVbG3cTIPpi6vD790rdJU2m1OOZ3ncy0ZzRKPemckNmpvBPH6kfzd9T2Td8uQU496WLftKZerP05ddR30pIrU= 20 | - secure: K3qdAHF0ju54ZQqKoRohqkyZLfkdOg2EAq7NtLBLLuFrX+J6ZUORoQhP/SzaNfVfCjRKOmBvSMc7y9kk3YFl2qhYvVg8gI5gWREsDUHchjLGI13PGGI3ncHjYHw03byqOqysf2HfHE4/2TZ+HZgtPrfa9txNIZuz59weN3CCEQ1+4jGOKZCTJr5WDKJZNqq7GQH3pdqP54jEYT1iJqQqwjxhuAy5vpZJmP0RpyOA/McdA4u6gbnGOiuphs5OdF5LGmba0HyI+gNIrDK94mHSPhjhaLpfxhCxA8oFEy7Ylot0W2CBgFeBYZHSxMNnmpf4W/D3pKQlfJgJmPhm27IBkJP8UhAr9YPiPWqvXG/WJk14FMA0ZV+38kRylT/nIt344BLmvMFVuz5WDaJSaZaY9fgNDnqkB6cVJZF5FpZnBynzIOZVvMFLDJuR+4xDEIk7SYX8PDrehQaTSHzCdZNON6fRLikOdTCudOAMvavoCWwNniWctM4j/a9A/mmhR3vWh7igLXngJWVYROethIW6/CATPAkaAXxNGDENABNbmm75AjLVGMoF1D6YIhQsOIpSS1aDoWPQuQzh/cGG+TaMjavPGjP+YSzFPHNHe7SpkxrKPBwPD9iNS8yjlS7SKnFi9sUu3U3ukWtYOE2ctxCdNgRR8rUPziRs9YluzZUa1w8= 21 | matrix: 22 | - TEST_DIR=chapter2-code;TMX_DOCKER_IMAGE=johncarnell/tmx-licensing-service:chapter2 23 | - TEST_DIR=chapter3-code/licensing-service;TMX_DOCKER_IMAGE=johncarnell/tmx-licensing-service:chapter3 24 | - TEST_DIR=chapter4-code/licensing-service;TMX_DOCKER_IMAGE=johncarnell/tmx-licensing-service:chapter4 25 | - TEST_DIR=chapter5-code/licensing-service;TMX_DOCKER_IMAGE=johncarnell/tmx-licensing-service:chapter5 26 | - TEST_DIR=chapter6-code/licensing-service;TMX_DOCKER_IMAGE=johncarnell/tmx-licensing-service:chapter6 27 | - TEST_DIR=chapter4-code/organization-service;TMX_DOCKER_IMAGE=johncarnell/tmx-organization-service:chapter4 28 | - TEST_DIR=chapter5-code/organization-service;TMX_DOCKER_IMAGE=johncarnell/tmx-organization-service:chapter5 29 | - TEST_DIR=chapter6-code/organization-service;TMX_DOCKER_IMAGE=johncarnell/tmx-organization-service:chapter6 30 | - TEST_DIR=chapter3-code/confsvr;TMX_DOCKER_IMAGE=johncarnell/tmx-confsvr:chapter3 31 | - TEST_DIR=chapter4-code/confsvr;TMX_DOCKER_IMAGE=johncarnell/tmx-confsvr:chapter4 32 | - TEST_DIR=chapter5-code/confsvr;TMX_DOCKER_IMAGE=johncarnell/tmx-confsvr:chapter5 33 | - TEST_DIR=chapter6-code/confsvr;TMX_DOCKER_IMAGE=johncarnell/tmx-confsvr:chapter6 34 | - TEST_DIR=chapter4-code/eurekasvr;TMX_DOCKER_IMAGE=johncarnell/tmx-eurekasvr:chapter4 35 | - TEST_DIR=chapter5-code/eurekasvr;TMX_DOCKER_IMAGE=johncarnell/tmx-eurekasvr:chapter5 36 | - TEST_DIR=chapter6-code/eurekasvr;TMX_DOCKER_IMAGE=johncarnell/tmx-eurekasvr:chapter6 37 | - TEST_DIR=chapter6-code/fluentd;TMX_DOCKER_IMAGE=johncarnell/tmx-fluentd:chapter6 38 | - TEST_DIR=chapter6-code/zuulsvr;TMX_DOCKER_IMAGE=johncarnell/tmx-zuulsvr:chapter6 39 | script: 40 | - cd $TEST_DIR 41 | - docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD 42 | - mvn clean package docker:build 43 | - docker push $TMX_DOCKER_IMAGE 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #Introduction 2 | All of the code examples in this book will include maven files for building docker images of the services being built. As we progress through the book we will be leveraging more and more infrastructure as we build our services out. These additional pieces of infrastructure will also be docker containers. 3 | 4 | 5 | #Software Needed 6 | All of the codes instances have been built and compiled on a Mac running OS X. We leverage Kitematic to build docker images. Kitematics will install docker, docker-machine and docker-compose. Docker is the core-runtime for docker containers. Docker-machine providers a virtual-machine instance that the docker containers will run, while docker-compose providers orchestration capabilities for starting and stopping groups of docker-machines. Download [Kitematic](https://kitematic.com/) and follow the instructions for installing the software. 7 | 8 | We are going to build and start all of our machines from the command-line. So once you start kitematic you should can open a command line window by pressing the command-line CLI button on left hand of the screen. 9 | 10 | #Structure of the Chapters 11 | Each chapter in the book is broken down into its own github repository and is designed to be completely indepenent of each other. As we progress through the individual chapters you will 12 | find some of the same projects being defined over and over again. This was intential to ensure that the code in each chapter could stand on its. Here are the links to the individual 13 | github repos. 14 | 15 | [Chapter 1 Introduction] (https://github.com/carnellj/spmia-chapter1) 16 | 17 | [Chapter 2 Introduction to Microservices] (https://github.com/carnellj/spmia-chapter2) 18 | 19 | [Chapter 3 Spring Cloud Configuration] (https://github.com/carnellj/spmia-chapter3) 20 | 21 | [Chapter 4 Spring Service Discovery] (https://github.com/carnellj/spmia-chapter4) 22 | 23 | [Chapter 5 Spring Cloud Client Side Resiliency] (https://github.com/carnellj/spmia-chapter5) 24 | 25 | [Chapter 6 Spring Cloud Routing] (https://github.com/carnellj/spmia-chapter6) 26 | --------------------------------------------------------------------------------