Skip to content

Inoeng85/graphql-microservices

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GRAPHQL-MICROSERVICES

This project showcases, how one could set up a graphql server using a (mildy simplified) microservice architecture.

Powered by Apollo Server 2, schema stitching by graphql-tools 4 and many more

Start in docker - via docker compose

sudo docker-compose up -d

Scale single services, eg the post-service, which has an identifier field for demo purposes build in

sudo docker-compose up -d --scale post=2

remove: sudo docker-compose down

Open the example API-Playground on http://localhost:3000 and issue GraphQL request.

It is composed of the separated user and post services, stitched together.

Start in docker env - manually

setup a new docker network initially.

sudo docker network create --driver bridge my-service

service-post

Build and run service-post container.

cd ./service-post
sudo docker build -t my-service/service-post .
sudo docker run -d \
--network=my-service \
--net-alias service-post \
my-service/service-post

You could start multiple services as well to get easy round robin load balancing. We added a hash field to our post service to identify the handling process.

service-user

Build and run service-user container.

cd ./service-user
sudo docker build -t my-service/service-user .
sudo docker run -d \
--network=my-service \
--net-alias service-user \
my-service/service-user

service-gateway

Build and run service-gateway container.

cd ./service-gateway
sudo docker build -t my-service/service-gateway .
sudo docker run -d \
--network=my-service \
-p 3000:3000 \
--net-alias service-gateway \
-e POST_URL='http://service-post:3010/graphql' \
-e USER_URL='http://service-user:3020/graphql' \
my-service/service-gateway

Sidenote: If you need to stop and remove all services do sthg like

sudo docker stop $(sudo docker ps -a -q)
sudo docker rm $(sudo docker ps -a -q)

Attention: This stops and removes all your running docker images

About

Showcasing a graphql microservice setup

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 85.3%
  • Dockerfile 14.7%