Quickstart guide for developer
Project uses custom Keycloak image in order to handle user events via kafka message bus. Custom Keycloak can be found at: elp-keycloak
In order to build services docker images have to be built and tagged via docker-compose build
$ docker-compose -f ./docker-compose_elk.yml -f ./docker-compose_eureka.yml -f ./docker-compose_event-service.yml -f ./docker-compose_kafka.yml -f ./docker-compose_keycloak.yml -f ./docker-compose_metrics.yml -f ./docker-compose_mongo.yml -f ./docker-compose_postgres.yml -f ./docker-compose_redis.yml -f ./docker-compose_user-service.yml -f ./docker-compose_web.yml build --parallel
Linux only additional config:
$ sudo sysctl -w vm.max_map_count=262144
Sometimes it is required to clean up kafka volume directory:
$ rm -rf volumes/dev-kafka-*
To run project use docker-compose up
command
$ docker-compose -f ./docker-compose_elk.yml -f ./docker-compose_eureka.yml -f ./docker-compose_event-service.yml -f ./docker-compose_kafka.yml -f ./docker-compose_keycloak.yml -f ./docker-compose_metrics.yml -f ./docker-compose_mongo.yml -f ./docker-compose_postgres.yml -f ./docker-compose_redis.yml -f ./docker-compose_user-service.yml -f ./docker-compose_web.yml up
This setup is all that is equired (including own services) in order to run and host complete application without external service tools (e.g. MongoDB viewer or PostgreSQL PGadmin tools, ...)
$ docker-compose -f ./docker-compose_all-dev.yml up
In order to develop project the external dependencies can be launched:
$ docker-compose -f ./docker-compose_elk.yml -f ./docker-compose_kafka.yml -f ./docker-compose_keycloak.yml -f ./docker-compose_metrics.yml -f ./docker-compose_mongo.yml -f ./docker-compose_postgres.yml -f ./docker-compose_redis.yml up
note: ternal web tools are included in this mode, keep in mind that the JVM service has to launched separately as well as eureka
service
This setup is used for minimal dev
profile of the spring applications:
$ docker-compose -f ./docker-compose_kafka.yml -f ./docker-compose_keycloak.yml -f ./docker-compose_mongo.yml -f ./docker-compose_postgres.yml -f ./docker-compose_redis.yml up
OR
$ docker-compose -f ./docker-compose_min-dev.yml
note: external web tools are included in this mode as well
This step is required in order to enable haproxy to use ssl with http mode to have fully functional https://
protocol working
$ sudo certbot certonly --standalone
In order to publish the website some proxy application has to be used e.g. haproxy, nginx, etc. Haproxy config is ready to be used.
$ sudo haproxy -f ./haproxy/haproxy-lua.cfg
Docker containers clean up can be done via docker-compose down
command
$ docker-compose -f ./docker-compose_elk.yml -f ./docker-compose_eureka.yml -f ./docker-compose_event-service.yml -f ./docker-compose_kafka.yml -f ./docker-compose_keycloak.yml -f ./docker-compose_metrics.yml -f ./docker-compose_mongo.yml -f ./docker-compose_postgres.yml -f ./docker-compose_redis.yml -f ./docker-compose_user-service.yml -f ./docker-compose_web.yml down
- PostgreSQL essential
- MongoDB essential
- Kafka & Zookeeper essential
- Redis essential
- Grafana & InfluxDB
- ELK: Elasticsearch, Logstash, Kibana
Feel free to fork or contact me on github: xcodeasscoaited !