http://mherman.org/microservice-movies/
Name | Service | Container | Tech |
---|---|---|---|
Web | Web | web | React, React-Router |
Movies API | Movies | movies | Node, Express |
Movies DB | Movies | movies-db | Postgres |
Swagger | Movies | swagger | Swagger UI |
Users API | Users | users | Node, Express |
Users DB | Users | users-db | Postgres |
Functional Tests | Test | n/a | TestCafe |
Check out the blog post.
-
Fork/Clone this repo
-
Download Docker (if necessary)
-
Make sure you are using a Docker version >= 17:
$ docker -v Docker version 17.03.0-ce, build 60ccb22
$ export NODE_ENV=development
Build the images:
$ docker-compose build
Run the containers:
$ docker-compose up -d
With the apps up, run:
$ sh init_db.sh
Test out the following services...
(1) Users - http://localhost:3000
Endpoint | HTTP Method | CRUD Method | Result |
---|---|---|---|
/users/ping | GET | READ | pong |
/users/register | POST | CREATE | add a user |
/users/login | POST | CREATE | log in a user |
/users/user | GET | READ | get user info |
(2) Movies - http://localhost:3001
Endpoint | HTTP Method | CRUD Method | Result |
---|---|---|---|
/movies/ping | GET | READ | pong |
/movies/user | GET | READ | get all movies by user |
/movies | POST | CREATE | add a single movie |
(3) Web - http://localhost:3007
Endpoint | HTTP Method | CRUD Method | Result |
---|---|---|---|
/ | GET | READ | render main page |
/login | GET | READ | render login page |
/register | GET | READ | render register page |
/logout | GET | READ | log a user out |
/collection | GET | READ | render collection page |
To access, get the container id from docker ps
and then open psql
:
$ docker exec -ti <container-id> psql -U postgres
With the containers up running and TestCafe globally installed, run:
$ sh test.sh
(7) Swagger - http://localhost:3003/docs
Access Swagger docs at the above URL
To stop the containers:
$ docker-compose stop
To bring down the containers:
$ docker-compose down
Want to force a build?
$ docker-compose build --no-cache
Remove images:
$ docker rmi $(docker images -q)