I posted an article in regards to a single-page application(UI), but in this post, I’m going to introduce how to build microservice architecture for the J2EE application with Spring framework and open-source SSO framework Keycloak. This post will cover the following aspects:
The code is available in my Github and please check the docker-compose.yml at first so that you can read the rest of the post easier. One thing I need to mention here is you need to replace the IP address of the keycloak server URL with your own before running the docker containers.
version: '3.4'
2
services:
3
api-gateway:
4
build:
5
context: ./api-gateway
6
ports:
7
- "8080:8080"
8
restart: on-failure
9
environment:
10
#overriding spring application.properties
11
- eureka.client.serviceUrl.defaultZone=http://eureka-server:9091/eureka/
12
- keycloak-client.server-url=http://10.0.0.17:18080/auth ## use host name or ip of the host machine
13
depends_on:
14
- eureka-server
15
eureka-server:
16
build:
17
context: ./eureka-server
18
ports:
19
- "9091:9091"
20
restart: on-failure
21
microservice-consumer:
22
build:
23
context: ./microservice-consumer
24
ports:
25
- "9080:9080"
26
restart: on-failure
27
environment:
28
#overriding spring application.properties
29
- eureka.client.serviceUrl.defaultZone=http://eureka-server:9091/eureka/
30
- keycloak-client.server-url=http://10.0.0.17:18080/auth ## use host name or ip of the host machine
31
depends_on:
32
- eureka-server
33
microservice-producer:
34
build:
35
context: ./microservice-producer
36
ports:
37
- "9081:9081"
38
restart: on-failure
39
environment:
40
#overriding spring application.properties
41
- eureka.client.serviceUrl.defaultZone=http://eureka-server:9091/eureka/
42
- keycloak-client.server-url=http://10.0.0.17:18080/auth ## use host name or ip of the host machine
43
depends_on:
44
- eureka-server
45
keycloak:
46
image: jboss/keycloak:11.0.0
47
volumes:
48
- ./keycloak-server/realm-export.json:/tmp/keycloak/config/realm-export.json
49
environment:
50
KEYCLOAK_USER: admin
51
KEYCLOAK_PASSWORD: admin
52
KEYCLOAK_IMPORT: /tmp/keycloak/config/realm-export.json
53
DB_VENDOR: POSTGRES
54
DB_ADDR: postgres
55
DB_DATABASE: keycloak
56
DB_USER: keycloak
57
DB_SCHEMA: public
58
DB_PASSWORD: password
59
ports:
60
- "18080:18080"
61
command:
62
- "-b"
63
- "0.0.0.0"
64
- "-Djboss.socket.binding.port-offset=10000"
65
restart: on-failure
66
depends_on:
67
- postgres
68
postgres:
69
image: postgres
70
volumes:
71
- postgres_data:/var/lib/postgresql/data
72
environment:
73
POSTGRES_DB: keycloak
74
POSTGRES_USER: keycloak
75
POSTGRES_PASSWORD: password
76
volumes:
77
postgres_data:
78
name: keycloak_postgres_data
79
driver: local
#spring boot #microservice #spring cloud #keycloak #eureka server #spring cloud gateway #spring secuirty 5 #sso authentication #java microservice #jwt token