$ docker network create nginx-kat
Run the main application first:
$ cd flask_application
$ docker build -t flask-app .
$ docker run --name flask1 -it -p 27015:27015 -d --network nginx-kat main-flask-app
Run the mirror application (continued from the previous steps):
$ docker run --name flask2 -it -p 27016:27015 -d --network nginx-kat main-flask-app
$ cd ..
$ docker build -t custom-nginx .
$ docker run --name nginx-test-kat -d -p 8180:80 --network nginx-kat custom-nginx
Make sure to run docker ps
to confirm the containers were spinned up properly and running.
If the container does not run, try docker logs [container name]
to investigate.
-p 8180:80
does port forwarding, which maps the localhost 8180 to docker port 80.
When running the main application, -p 27015:27015
maps localhost 27015 to docker port 27015
Docker port 27015 is defined in /flask_application/Dockerfile
.
EXPOSE 27015
allows the external traffic (outside docker) to access the 27015 port inside docker.
The 27015 in CMD [ "flask", "run","--host","0.0.0.0","--port","27015"]
command runs the flask application on 27015 inside docker.
The flask program simply counts and display the number of requests that hit the server.
We need to add resolver 127.0.0.11;
for /mirror
in nginx.conf
to make the mirroring to work
127.0.0.11
is the docker internal DNS server address
Go to localhost:8081, and hit the endpoint 10 times
Go to localhost:27015 (the main server), should see number 11
Go to localhost:27016 (the mirror server), should see number 11 (depending on the settings of Nginx)