mirror of https://github.com/01-edu/public.git
feat(play-with-containers): update subject and audit
Make subject and audit language agnostic
This commit is contained in:
parent
63791b63f1
commit
a34a04258e
|
@ -1,87 +1,124 @@
|
|||
## play-with-containers
|
||||
|
||||
![Microservices](pictures/Microservices.png)
|
||||
|
||||
### Objectives
|
||||
|
||||
This project aims to discover the container concepts and tools, and practice these tools by creating a microservices architecture with docker and docker-compose. Additionally, as a cloud and DevOps student, you will gain insight into key containers and docker concepts as follows:
|
||||
|
||||
- `Containers`, is a unit of software that packages code and its dependencies so the application runs quickly and reliably across computing environments.
|
||||
- `Docker`, is a set of "platform as a service" products that use OS-level virtualization to deliver software in packages called containers.
|
||||
- `Dockerfile`, is a text document that contains all the commands a user could call on the command line to assemble an image.
|
||||
- `Docker Images`, is a read-only template that contains a set of instructions for creating a container that can run on the Docker platform.
|
||||
- `Docker Networks`, it enables a user to link a Docker container to as many networks as he/she requires.
|
||||
- `Docker Volumes`, Volumes are the preferred mechanism for persisting data generated and used by Docker containers.
|
||||
- `Docker Compose`, Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application's services.
|
||||
|
||||
### Tips
|
||||
|
||||
- Spend time on the theory before rushing into the practice.
|
||||
- Read the official documentation of Docker.
|
||||
|
||||
> Any lack of understanding of the concepts of this project may affect the difficulty of future projects, take your time to understand all concepts.
|
||||
|
||||
> Be curious and never stop searching!
|
||||
|
||||
> Each operation in Dockerfile is a layer in the image, You must design it appropriately to avoid duplicate or useless layers in the image.
|
||||
|
||||
> It is not recommended to use 'latest' in your Dockerfile, instead of that you can specify the version in the tag.
|
||||
|
||||
### Instructions
|
||||
|
||||
You have to install Docker in your Linux virtual machine, you will also need it in the audit.
|
||||
|
||||
You have to implement this architecture:
|
||||
![architecture](pictures/architecture.png)
|
||||
|
||||
You will use the services you developed in the `crud-master` project.
|
||||
|
||||
You are required to create `Dockerfile`s for each service and call them in your `docker-compose.yml` (Each service should have its container for optimal performance.).
|
||||
To ensure performance, the containers should be created from the penultimate stable version of either `Alpine` or `Debian`, depending on your preference.
|
||||
The corresponding service and Docker image must share the same name.
|
||||
This implies that you must build your project's Docker images and you are not allowed to use pre-built Docker images or services like DockerHub, except for `Alpine` and `Debian`.
|
||||
|
||||
#### Docker Containers:
|
||||
|
||||
- `inventory-database container` is a SQL database server that contains your inventory database, it must be accessible via port `5432`.
|
||||
- `billing-database container` is a SQL database server that contains your billing database, it must be accessible via port `5432`.
|
||||
- `inventory-app container` is a Node.js server that contains your inventory-app. It will be connected to the inventory database and accessible via port `8080`.
|
||||
- `billing-app container` is a Node.js server that contains your billing-app. It will be connected to the billing database and consuming the messages from the RabbitMQ queue. It will be accessible via port `8080`.
|
||||
- `RabbitMQ container` is a RabbitMQ server that contains the queue.
|
||||
- `api-gateway-app container` is a Node.js server that contains your api-gateway-app. It will forward the requests to the other services and it's accessible via port `3000`.
|
||||
|
||||
> Containers must be restarted in case of failure!
|
||||
|
||||
#### Docker Volumes:
|
||||
|
||||
- `inventory-database volume` contains your inventory database.
|
||||
- `billing-database volume` contains your billing database.
|
||||
- `api-gateway-app volume` contains your Api gateway logs.
|
||||
|
||||
#### Docker Network:
|
||||
|
||||
- You must have a docker network that establishes the connection between all services inside your docker host.
|
||||
- Any outside request must be able to access only the `api-gateway-app` via port `3000`.
|
||||
|
||||
> All resources in your infrastructure must be targeted and managed by docker-compose.
|
||||
|
||||
> You don't have to push your credentials and passwords to your repo, the credentials and passwords must be in the `.env` file, and this file must be ignored in the `.gitignore` file.
|
||||
|
||||
> Don't push your passwords to Git, unless you want to throw a thief's party with free drinks and no bouncers on duty!
|
||||
|
||||
### Documentation
|
||||
|
||||
You must push a `README.md` file containing full documentation of your solution (prerequisites, configuration, setup, usage, etc).
|
||||
|
||||
### Bonus
|
||||
|
||||
If you complete the mandatory part successfully and you still have free time, you can implement anything that you feel deserves to be a bonus.
|
||||
|
||||
Challenge yourself!
|
||||
|
||||
### Submission and audit
|
||||
|
||||
You must submit the `README.md` file and all files used to create, delete and manage your infrastructure: docker-compose, Dockerfiles, scripts and so on.
|
||||
|
||||
> The infrastructure must be able to be created, deleted, and managed only by docker-compose.
|
||||
> In the audit you will be asked different questions about the concepts and the practices of this project, prepare yourself!
|
||||
## play-with-containers
|
||||
|
||||
![Microservices](./resources/Microservices.png)
|
||||
|
||||
### Objectives
|
||||
|
||||
This project aims to discover the container concepts and tools, and practice
|
||||
these tools by creating a microservices' architecture with docker and
|
||||
docker-compose. Additionally, as a cloud and DevOps student, you will gain
|
||||
insight into key containers and docker concepts as follows:
|
||||
|
||||
- `Containers`, is a unit of software that packages code and its dependencies,
|
||||
so the application runs quickly and reliably across computing environments.
|
||||
- `Docker`, is a set of "platform as a service" products that use OS-level
|
||||
virtualization to deliver software in packages called containers.
|
||||
- `Dockerfile`, is a text document that contains all the commands a user could
|
||||
call on the command line to assemble an image.
|
||||
- `Docker Images`, is a read-only template that contains a set of instructions
|
||||
for creating a container that can run on the Docker platform.
|
||||
- `Docker Networks`, it enables a user to link a Docker container to as many
|
||||
networks as he/she requires.
|
||||
- `Docker Volumes`, Volumes are the preferred mechanism for persisting data
|
||||
generated and used by Docker containers.
|
||||
- `Docker Compose`, Compose is a tool for defining and running multi-container
|
||||
Docker applications. With Compose, you use a YAML file to configure your
|
||||
application's services.
|
||||
|
||||
### Tips
|
||||
|
||||
- Spend time on the theory before rushing into the practice.
|
||||
- Read the official documentation of Docker.
|
||||
|
||||
> Any lack of understanding of the concepts of this project may affect the
|
||||
> difficulty of future projects, take your time to understand all concepts.
|
||||
|
||||
> Be curious and never stop searching!
|
||||
|
||||
> Each operation in Dockerfile is a layer in the image, You must design it
|
||||
> appropriately to avoid duplicate or useless layers in the image.
|
||||
|
||||
> It is not recommended to use 'latest' in your Dockerfile, instead of that
|
||||
> you can specify the version in the tag.
|
||||
|
||||
### Instructions
|
||||
|
||||
You have to install Docker in your Linux virtual machine, you will also need it
|
||||
in the audit.
|
||||
|
||||
You have to implement this architecture:
|
||||
![architecture](./resources/play-with-containers-py.png)
|
||||
|
||||
You will use the services you developed in the `crud-master-py` project.
|
||||
|
||||
You are required to create a `Dockerfile` for each service and call them in
|
||||
your `docker-compose.yml` (each service should have its container for optimal
|
||||
performance.). To ensure performance, the containers should be created from the
|
||||
penultimate stable version of either `Alpine` or `Debian`, depending on your
|
||||
preference. The corresponding service and Docker image must share the same
|
||||
name. This implies that you must build your project's Docker images, and you are
|
||||
not allowed to use pre-built Docker images or services like Docker Hub, except
|
||||
for `Alpine` and `Debian`.
|
||||
|
||||
#### Docker Containers:
|
||||
|
||||
- `inventory-db container` is a SQL database server that contains your
|
||||
inventory database, it must be accessible via port `5432`.
|
||||
- `billing-db container` is a SQL database server that contains your
|
||||
billing database, it must be accessible via port `5432`.
|
||||
- `inventory-app container` is a server that contains your
|
||||
inventory-app. It will be connected to the inventory database and accessible
|
||||
via port `8080`.
|
||||
- `billing-app container` is a server that contains your billing-app.
|
||||
It will be connected to the billing database and consuming the messages from
|
||||
the RabbitMQ queue. It will be accessible via port `8080`.
|
||||
- `rabbit-queue` is a RabbitMQ server that contains the queue.
|
||||
- `api-gateway-app container` is a server that contains your
|
||||
API gateway. It will forward the requests to the other services, and it's
|
||||
accessible via port `3000`.
|
||||
|
||||
> Containers must be restarted in case of failure!
|
||||
|
||||
#### Docker Volumes:
|
||||
|
||||
- `inventory-db volume` contains your inventory database.
|
||||
- `billing-db volume` contains your billing database.
|
||||
- `api-gateway-app volume` contains your API gateway logs.
|
||||
|
||||
#### Docker Network:
|
||||
|
||||
- You must have a docker network that establishes the connection between all
|
||||
services inside your docker host.
|
||||
- Any outside request must be able to access only the `api-gateway-app` via
|
||||
port `3000`.
|
||||
|
||||
> All resources in your infrastructure must be targeted and managed by
|
||||
> docker-compose.
|
||||
|
||||
> You don't have to push your credentials and passwords to your repo, the
|
||||
> credentials and passwords must be in the `.env` file, and this file must be
|
||||
> ignored in the `.gitignore` file.
|
||||
|
||||
> Don't push your passwords to Git, unless you want to throw a thief's party
|
||||
> with free drinks and no bouncers on duty!
|
||||
|
||||
### Documentation
|
||||
|
||||
You must push a `README.md` file containing full documentation of your solution
|
||||
(prerequisites, configuration, setup, usage, etc.).
|
||||
|
||||
### Bonus
|
||||
|
||||
If you complete the mandatory part successfully, and you still have free time,
|
||||
you can implement anything that you feel deserves to be a bonus.
|
||||
|
||||
Challenge yourself!
|
||||
|
||||
### Submission and audit
|
||||
|
||||
You must submit the `README.md` file and all files used to create, delete and
|
||||
manage your infrastructure: docker-compose, Dockerfiles, scripts and so on.
|
||||
|
||||
> The infrastructure must be able to be created, deleted, and managed only by
|
||||
> `docker-compose`. In the audit you will be asked different questions about
|
||||
> the concepts and the practices of this project, prepare yourself!
|
||||
|
|
|
@ -1,223 +1,223 @@
|
|||
#### General
|
||||
|
||||
##### Check the Repo content
|
||||
|
||||
A `README.md` file and all files used to create, delete and manage the student infrastructure must be submitted in the repo.
|
||||
|
||||
###### Are all the required files present?
|
||||
|
||||
###### Does the `.env` file not exist in the repo?
|
||||
|
||||
###### Are all pushed files in the repo clean of any credentials or passwords?
|
||||
|
||||
##### Ask the following questions to the group or student:
|
||||
|
||||
##### What are containers and what are their advantages?
|
||||
|
||||
##### What is the difference between containers and virtual machines?
|
||||
|
||||
##### What is Docker and what is it used for?
|
||||
|
||||
###### Did the student reply correctly to the questions?
|
||||
|
||||
##### Open and read the `README.md` file provided by the student.
|
||||
|
||||
###### Does the `README.md` file contain all the required information to run and manage the solution (prerequisites, configuration, setup, usage, etc)?
|
||||
|
||||
#### Check the student infrastructure:
|
||||
|
||||
The student must implement this architecture:
|
||||
![architecture](../pictures/architecture.png)
|
||||
|
||||
##### Run the student infrastructure:
|
||||
|
||||
```console
|
||||
user:~$ docker-compose up
|
||||
<...>
|
||||
inventory-database ... done
|
||||
billing-database ... done
|
||||
inventory-app ... done
|
||||
billing-app ... done
|
||||
RabbitMQ ... done
|
||||
api-gateway-app ... done
|
||||
<...>
|
||||
user:~$
|
||||
```
|
||||
|
||||
###### Does the student architecture reflect the infrastructure enforced by the subject?
|
||||
|
||||
###### Does the infrastructure start correctly?
|
||||
|
||||
##### Ask the following questions to the group or student
|
||||
|
||||
##### What is a microservices architecture?
|
||||
|
||||
##### Why do we use microservices architecture?
|
||||
|
||||
##### What is a queue and what is it used for?
|
||||
|
||||
##### What is RabbitMQ?
|
||||
|
||||
###### Did the student reply correctly to the questions?
|
||||
|
||||
#### Verify the Dockerfiles:
|
||||
|
||||
###### Is there a Dockerfile for each service?
|
||||
|
||||
###### Are all Dockerfiles based on `Debian` or `Alpine`?
|
||||
|
||||
###### There is no sensitive data in Dockerfiles or other solution files (sensitive data should only exist in `.env` file)?
|
||||
|
||||
##### Ask the following questions to the group or student
|
||||
|
||||
##### What is a Dockerfile?
|
||||
|
||||
##### Explain the instructions used on the Dockerfile.
|
||||
|
||||
###### Did the student reply correctly to the questions?
|
||||
|
||||
#### Check the Containers:
|
||||
|
||||
```console
|
||||
user:~$ docker ps
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
<...> inventory-database <...> <...> <...> 5432/tcp inventory-database
|
||||
<...> billing-database <...> <...> <...> 5432/tcp billing-database
|
||||
<...> inventory-app <...> <...> <...> 8080/tcp inventory-app
|
||||
<...> billing-app <...> <...> <...> 8080/tcp billing-app
|
||||
<...> RabbitMQ <...> <...> <...> 5672/tcp RabbitMQ
|
||||
<...> api-gateway-app <...> <...> <...> 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp api-gateway-app
|
||||
user:~$
|
||||
```
|
||||
|
||||
- `inventory-database container` is a SQL database server that contains your inventory database, it must be accessible via port `5432`.
|
||||
- `billing-database container` is a SQL database server that contains your billing database, it must be accessible via port `5432`.
|
||||
- `inventory-app container` is a Node.js server that contains your inventory-app. It will be connected to the inventory database and accessible via port `8080`.
|
||||
- `billing-app container` is a Node.js server that contains your billing-app. It will be connected to the billing database and consuming the messages from the RabbitMQ queue. It will be accessible via port `8080`.
|
||||
- `RabbitMQ container` is a RabbitMQ server that contains the queue.
|
||||
- `api-gateway-app container` is a Node.js server that contains your api-gateway-app. It will forward the requests to the other services and it's accessible via port `3000`.
|
||||
|
||||
##### Check the Container restart policy:
|
||||
|
||||
```console
|
||||
user:~$ docker inspect -f "{{ .HostConfig.RestartPolicy }}" <container-name>
|
||||
{on-failure 0}
|
||||
user:~$
|
||||
```
|
||||
|
||||
###### Do all containers have the correct configuration?
|
||||
|
||||
###### Are the containers configured to restart in case of failure?
|
||||
|
||||
#### Check the Docker volumes:
|
||||
|
||||
```console
|
||||
user:~$ docker volume ls
|
||||
DRIVER VOLUME NAME
|
||||
<...> inventory-database
|
||||
<...> billing-database
|
||||
<...> api-gateway-app
|
||||
user:~$
|
||||
```
|
||||
|
||||
- `inventory-database volume` contains the inventory database.
|
||||
- `billing-database volume` contains the billing database.
|
||||
- `api-gateway-app volume` contains the Api gateway logs.
|
||||
|
||||
###### Do all volumes have the correct configuration?
|
||||
|
||||
##### Ask the following questions to the group or student
|
||||
|
||||
##### What is a Docker volume?
|
||||
|
||||
##### Why do we use Docker volumes?
|
||||
|
||||
###### Did the student reply correctly to the questions?
|
||||
|
||||
#### Check the solution network:
|
||||
|
||||
###### Is the connection to the api-gateway-app the only one exposed from outside of the Docker host?
|
||||
|
||||
##### Ask the following questions to the group or student
|
||||
|
||||
##### What is the Docker network?
|
||||
|
||||
##### Why do we use the Docker network?
|
||||
|
||||
###### Did the student reply correctly to the questions?
|
||||
|
||||
#### Check the Docker images:
|
||||
|
||||
```console
|
||||
user:~$ docker images
|
||||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||||
inventory-database <...> <...> <...> <...>
|
||||
billing-database <...> <...> <...> <...>
|
||||
inventory-app <...> <...> <...> <...>
|
||||
billing-app <...> <...> <...> <...>
|
||||
RabbitMQ <...> <...> <...> <...>
|
||||
api-gateway-app <...> <...> <...> <...>
|
||||
user:~$
|
||||
```
|
||||
|
||||
###### Is there a Docker image for each service with the same service name?
|
||||
|
||||
##### Ask the following questions to the group or student
|
||||
|
||||
##### What is a Docker image?
|
||||
|
||||
##### Why do we use Docker images?
|
||||
|
||||
##### Where can we find some public Docker images?
|
||||
|
||||
###### Did the student reply correctly to the questions?
|
||||
|
||||
#### Inventory API Endpoints
|
||||
|
||||
##### Open Postman and make a `POST` request to `http://[GATEWAY_IP]:[GATEWAY_PORT]/api/movies/` address with the following body as `Content-Type: application/json`:
|
||||
```json
|
||||
{
|
||||
"title": "A new movie",
|
||||
"description": "Very short description"
|
||||
}
|
||||
```
|
||||
|
||||
###### Can you confirm the response was the success code `200`?
|
||||
|
||||
##### In Postman make a `GET` request to `http://[GATEWAY_IP]:[GATEWAY_PORT]/api/movies/` address.
|
||||
|
||||
###### Can you confirm the response was success code `200` and the body of the response is in `json` with the information of the last added movie?
|
||||
|
||||
#### Billing API Endpoints
|
||||
|
||||
##### Open Postman and make a `POST` request to `http://[GATEWAY_IP]:[GATEWAY_PORT]/api/billing/` address with the following body as `Content-Type: application/json`:
|
||||
```json
|
||||
{
|
||||
"user_id": "20",
|
||||
"number_of_items": "99",
|
||||
"total_amount": "250"
|
||||
}
|
||||
```
|
||||
|
||||
###### Can you confirm the response was success code `200`?
|
||||
|
||||
##### Stop the billing-app container
|
||||
|
||||
###### Can you confirm the `billing-app` container was correctly stopped?
|
||||
|
||||
##### Open Postman and make a `POST` request to `http://[GATEWAY_IP]:[GATEWAY_PORT]/api/billing/` address with the following body as `Content-Type: application/json`:
|
||||
```json
|
||||
{
|
||||
"user_id": "22",
|
||||
"number_of_items": "10",
|
||||
"total_amount": "50"
|
||||
}
|
||||
```
|
||||
|
||||
###### Can you confirm the response was success code `200` even if the `billing_app` is not working?
|
||||
|
||||
#### Bonus
|
||||
|
||||
###### +Did the student add any optional bonus?
|
||||
|
||||
###### +Is this project an outstanding project?
|
||||
#### General
|
||||
|
||||
##### Check the Repo content
|
||||
|
||||
A `README.md` file and all files used to create, delete and manage the student infrastructure must be submitted in the repo.
|
||||
|
||||
###### Are all the required files present?
|
||||
|
||||
###### Was the `.env` file excluded from the git files?
|
||||
|
||||
###### Are all pushed files in the repo clean of any credentials or passwords?
|
||||
|
||||
##### Ask the following questions to the group or student:
|
||||
|
||||
##### What are containers and what are their advantages?
|
||||
|
||||
##### What is the difference between containers and virtual machines?
|
||||
|
||||
##### What is Docker and what is it used for?
|
||||
|
||||
###### Did the student reply correctly to the questions?
|
||||
|
||||
##### Open and read the `README.md` file provided by the student.
|
||||
|
||||
###### Does the `README.md` file contain all the required information to run and manage the solution (prerequisites, configuration, setup, usage, etc)?
|
||||
|
||||
#### Check the student infrastructure:
|
||||
|
||||
The student must implement this architecture:
|
||||
![architecture](../pictures/architecture.png)
|
||||
|
||||
##### Run the student infrastructure:
|
||||
|
||||
```console
|
||||
user:~$ docker-compose up
|
||||
<...>
|
||||
inventory-database ... done
|
||||
billing-database ... done
|
||||
inventory-app ... done
|
||||
billing-app ... done
|
||||
RabbitMQ ... done
|
||||
api-gateway-app ... done
|
||||
<...>
|
||||
user:~$
|
||||
```
|
||||
|
||||
###### Does the student architecture reflect the infrastructure enforced by the subject?
|
||||
|
||||
###### Does the infrastructure start correctly?
|
||||
|
||||
##### Ask the following questions to the group or student
|
||||
|
||||
##### What is a microservices' architecture?
|
||||
|
||||
##### Why do we use microservices architecture?
|
||||
|
||||
##### What is a queue and what is it used for?
|
||||
|
||||
##### What is RabbitMQ?
|
||||
|
||||
###### Did the student reply correctly to the questions?
|
||||
|
||||
#### Verify the Dockerfiles:
|
||||
|
||||
###### Is there a Dockerfile for each service?
|
||||
|
||||
###### Are all Dockerfiles based on `Debian` or `Alpine`?
|
||||
|
||||
###### Are Dockerfiles or any other solution files free from sensitive data (sensitive data should only exist in `.env` file)?
|
||||
|
||||
##### Ask the following questions to the group or student
|
||||
|
||||
##### What is a Dockerfile?
|
||||
|
||||
##### Explain the instructions used on the Dockerfile.
|
||||
|
||||
###### Did the student reply correctly to the questions?
|
||||
|
||||
#### Check the Containers:
|
||||
|
||||
```console
|
||||
user:~$ docker ps
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
<...> inventory-database <...> <...> <...> 5432/tcp inventory-database
|
||||
<...> billing-database <...> <...> <...> 5432/tcp billing-database
|
||||
<...> inventory-app <...> <...> <...> 8080/tcp inventory-app
|
||||
<...> billing-app <...> <...> <...> 8080/tcp billing-app
|
||||
<...> RabbitMQ <...> <...> <...> 5672/tcp RabbitMQ
|
||||
<...> api-gateway-app <...> <...> <...> 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp api-gateway-app
|
||||
user:~$
|
||||
```
|
||||
|
||||
- `inventory-db container` is a SQL database server that contains your inventory database, it must be accessible via port `5432`.
|
||||
- `billing-db container` is a SQL database server that contains your billing database, it must be accessible via port `5432`.
|
||||
- `inventory-app container` is a Node.js server that contains your inventory-app. It will be connected to the inventory database and accessible via port `8080`.
|
||||
- `billing-app container` is a Node.js server that contains your billing-app. It will be connected to the billing database and consuming the messages from the RabbitMQ queue. It will be accessible via port `8080`.
|
||||
- `rabbit-queue` is a RabbitMQ server that contains the queue.
|
||||
- `api-gateway-app container` is a Node.js server that contains your api-gateway-app. It will forward the requests to the other services and it's accessible via port `3000`.
|
||||
|
||||
##### Check the Container restart policy:
|
||||
|
||||
```console
|
||||
user:~$ docker inspect -f "{{ .HostConfig.RestartPolicy }}" <container-name>
|
||||
{on-failure 0}
|
||||
user:~$
|
||||
```
|
||||
|
||||
###### Do all containers have the correct configuration?
|
||||
|
||||
###### Are the containers configured to restart in case of failure?
|
||||
|
||||
#### Check the Docker volumes:
|
||||
|
||||
```console
|
||||
user:~$ docker volume ls
|
||||
DRIVER VOLUME NAME
|
||||
<...> inventory-database
|
||||
<...> billing-database
|
||||
<...> api-gateway-app
|
||||
user:~$
|
||||
```
|
||||
|
||||
- `inventory-database volume` contains the inventory database.
|
||||
- `billing-database volume` contains the billing database.
|
||||
- `api-gateway-app volume` contains the API gateway logs.
|
||||
|
||||
###### Do all volumes have the correct configuration?
|
||||
|
||||
##### Ask the following questions to the group or student
|
||||
|
||||
##### What is a Docker volume?
|
||||
|
||||
##### Why do we use Docker volumes?
|
||||
|
||||
###### Did the student reply correctly to the questions?
|
||||
|
||||
#### Check the solution network:
|
||||
|
||||
###### Is the connection to the api-gateway-app the only one exposed from outside of the Docker host?
|
||||
|
||||
##### Ask the following questions to the group or student
|
||||
|
||||
##### What is the Docker network?
|
||||
|
||||
##### Why do we use the Docker network?
|
||||
|
||||
###### Did the student reply correctly to the questions?
|
||||
|
||||
#### Check the Docker images:
|
||||
|
||||
```console
|
||||
user:~$ docker images
|
||||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||||
inventory-database <...> <...> <...> <...>
|
||||
billing-database <...> <...> <...> <...>
|
||||
inventory-app <...> <...> <...> <...>
|
||||
billing-app <...> <...> <...> <...>
|
||||
RabbitMQ <...> <...> <...> <...>
|
||||
api-gateway-app <...> <...> <...> <...>
|
||||
user:~$
|
||||
```
|
||||
|
||||
###### Is there a Docker image for each service with the same service name?
|
||||
|
||||
##### Ask the following questions to the group or student
|
||||
|
||||
##### What is a Docker image?
|
||||
|
||||
##### Why do we use Docker images?
|
||||
|
||||
###### Did the student reply correctly to the questions?
|
||||
|
||||
#### Inventory API Endpoints
|
||||
|
||||
##### Open Postman and make a `POST` request to `http://[GATEWAY_IP]:[GATEWAY_PORT]/api/movies/` address with the following body as `Content-Type: application/json`:
|
||||
```json
|
||||
{
|
||||
"title": "A new movie",
|
||||
"description": "Very short description"
|
||||
}
|
||||
```
|
||||
|
||||
###### Can you confirm the response was the success code `200`?
|
||||
|
||||
##### In Postman make a `GET` request to `http://[GATEWAY_IP]:[GATEWAY_PORT]/api/movies/` address.
|
||||
|
||||
###### Can you confirm the response was success code `200` and the body of the response is in `json` with the information of the last added movie?
|
||||
|
||||
#### Billing API Endpoints
|
||||
|
||||
##### Open Postman and make a `POST` request to `http://[GATEWAY_IP]:[GATEWAY_PORT]/api/billing/` address with the following body as `Content-Type: application/json`:
|
||||
```json
|
||||
{
|
||||
"user_id": "20",
|
||||
"number_of_items": "99",
|
||||
"total_amount": "250"
|
||||
}
|
||||
```
|
||||
|
||||
###### Can you confirm the response was success code `200`?
|
||||
|
||||
##### Stop the billing-app container
|
||||
|
||||
###### Can you confirm the `billing-app` container was correctly stopped?
|
||||
|
||||
##### Open Postman and make a `POST` request to `http://[GATEWAY_IP]:[GATEWAY_PORT]/api/billing/` address with the following body as `Content-Type: application/json`:
|
||||
```json
|
||||
{
|
||||
"user_id": "22",
|
||||
"number_of_items": "10",
|
||||
"total_amount": "50"
|
||||
}
|
||||
```
|
||||
|
||||
###### Can you confirm the response was success code `200` even if the `billing_app` is not working?
|
||||
|
||||
#### Bonus
|
||||
|
||||
###### +Did the student use his/her own `crud-master-py` solution?
|
||||
|
||||
###### +Did the student add any optional bonus?
|
||||
|
||||
###### +Is this project an outstanding project?
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 525 KiB |
Before Width: | Height: | Size: 396 KiB After Width: | Height: | Size: 396 KiB |
Binary file not shown.
After Width: | Height: | Size: 560 KiB |
Loading…
Reference in New Issue