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=developmentBuild the images:
$ docker-compose buildRun the containers:
$ docker-compose up -dWith the apps up, run:
$ sh init_db.shTest 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 postgresWith 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 stopTo bring down the containers:
$ docker-compose downWant to force a build?
$ docker-compose build --no-cacheRemove images:
$ docker rmi $(docker images -q)