2023-05-04 22:53:28 +10:00
|
|
|
# e.g. 3: Create an Ningx Reverse Proxy With Docker
|
|
|
|
|
2023-05-04 22:53:48 +10:00
|
|
|
[How To Run Multiple Docker Containers Under One URL](https://codingwithmanny.medium.com/create-an-nginx-reverse-proxy-with-docker-a1c0aa9078f1)
|
2023-05-04 22:53:28 +10:00
|
|
|
|
2023-05-04 23:45:36 +10:00
|
|
|
## Backend only
|
|
|
|
|
|
|
|
How to test it:
|
2023-05-04 23:51:49 +10:00
|
|
|
1. Comment all other containers
|
|
|
|
2. Run `docker compose build` & `docker compose up`
|
|
|
|
3. Test by `curl localhost:5000`, should return `{"version":"1.0.0"}`
|
2023-05-04 23:45:36 +10:00
|
|
|
|
2023-05-04 23:51:49 +10:00
|
|
|
## Frontend only
|
|
|
|
|
|
|
|
How to test it:
|
2023-05-04 23:45:36 +10:00
|
|
|
1. Comment all other containers
|
|
|
|
2. Run `docker compose build` & `docker compose up`
|
2023-05-05 00:00:15 +10:00
|
|
|
3. Test by `curl localhost`, should return a html file (as `/eg3/frontend/index.html`)
|
|
|
|
|
|
|
|
## Backend + Frontend
|
|
|
|
|
|
|
|
In this section, we test frontend container can cross-communicate with backend container.
|
|
|
|
|
|
|
|
Steps:
|
|
|
|
1. Comment out proxy container
|
|
|
|
2. frontend has port 80 exposed; backend has port 5000 exposed;
|
|
|
|
3. Run `docker compose build` & `docker compose up`
|
|
|
|
4. Create a network: `docker network create mynetwork`
|
|
|
|
5. Add containers into network
|
|
|
|
1. `docker network connect mynetwork backend`
|
|
|
|
2. `docker network connect mynetwork frontend`
|
|
|
|
6. Inspect `mynetwork` has containers `docker network inspect mynetwork`
|
|
|
|
7. Test network:
|
|
|
|
1. Enter frontend container: `docker exec -it frontend /bin/sh`
|
|
|
|
2. Make a request to backend: `curl http://backend:5000`
|
|
|
|
3. Get response `{"version": "1.0.0"}`
|