Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kriswep/graphql-microservices
Showcasing a graphql microservice setup
https://github.com/kriswep/graphql-microservices
api backend docker docker-compose graphql graphql-microservices microservice microservices service-gateway showcase
Last synced: 18 days ago
JSON representation
Showcasing a graphql microservice setup
- Host: GitHub
- URL: https://github.com/kriswep/graphql-microservices
- Owner: kriswep
- License: mit
- Created: 2017-12-02T12:47:52.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-09-16T06:34:18.000Z (about 2 months ago)
- Last Synced: 2024-10-11T12:12:37.908Z (about 1 month ago)
- Topics: api, backend, docker, docker-compose, graphql, graphql-microservices, microservice, microservices, service-gateway, showcase
- Language: JavaScript
- Size: 1.21 MB
- Stars: 77
- Watchers: 4
- Forks: 13
- Open Issues: 23
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# GRAPHQL-MICROSERVICES
This project showcases, how one could set up a graphql server using a (mildy simplified) microservice
architecture.[![CircleCI](https://circleci.com/gh/kriswep/graphql-microservices.svg?style=svg)](https://circleci.com/gh/kriswep/graphql-microservices)
_Powered by [Apollo Server 2](https://github.com/apollographql/apollo-server/), using [Apollo Federation](https://www.apollographql.com/docs/apollo-server/federation/introduction/) to expose a single, 'monolithic' API 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.
```bash
sudo docker network create --driver bridge my-service
```**service-post**
Build and run service-post container.
```bash
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.
```bash
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.
```bash
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
```bash
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