More Docker Compose #0003

73 min read

Summary:

In this session, I walk through a live demo of using a reverse-proxy container and then running a plurality of other apps and databases also running in containers. I demonstrate how to persist the data in the applications by separating the data from the containers. I also walk through live examples of testing request and response while passing through the reverse-proxy.

I used this git repo in this session.

GitHub - beacloudgenius/dockerfiles at thecloudseminar.com
multi container architecture. Contribute to beacloudgenius/dockerfiles development by creating an account on GitHub.

AI Generated Transcript

WEBVTT

00:00.000 --> 00:04.280
So I think we should get started since we are on a multiple

00:04.280 --> 00:08.400
time zones and lots of people from various places. So let's

00:08.400 --> 00:12.720
begin. Let's begin. So what I was talking about briefly here

00:12.720 --> 00:17.000
is this idea of, you know, this guy, Jeffrey. If you do know

00:17.000 --> 00:21.240
if you know him or not, I don't know. But this person is

00:21.240 --> 00:25.000
considered the father of AI, modern AI, Jeffrey Hinton, and

00:25.000 --> 00:28.080
it is his tweet on May 1st.

00:28.080 --> 00:32.520
Which is yesterday, and he says some New York Times News, you

00:32.520 --> 00:36.160
know implies that you left Google so you can criticize

00:36.160 --> 00:40.320
Google, but that's not the reason he says he did. He's so

00:40.320 --> 00:42.480
you could talk about dangers of AI.

00:43.560 --> 00:46.720
Without considering how it impacts Google, so Google is

00:46.720 --> 00:50.760
fine according to him. So he's talking about dangers of AI on

00:50.760 --> 00:53.600
one hand and then further below. Maybe I overreacted.

00:54.720 --> 00:55.160
So.

00:55.160 --> 00:59.840
Yeah, maybe maybe you have to read the detail on what his

00:59.840 --> 01:02.360
tweets are. And what he's trying to communicate.

01:03.040 --> 01:05.720
But. Bottom line is.

01:06.720 --> 01:11.200
We don't know that's the real bottom line. Nobody knows, so I

01:11.200 --> 01:13.640
think we should. We should start streaming.

01:14.360 --> 01:18.840
So the streaming thing that I run is actually goes out to

01:18.840 --> 01:22.280
multiple social media channels through a streamer, a streaming

01:22.280 --> 01:26.360
device that I have built using Docker and that streams. So I'm

01:26.360 --> 01:30.560
going to start that streaming and see if it actually works out

01:30.560 --> 01:35.280
OK. So here I go. I'm going to hit the stream now button.

01:36.120 --> 01:39.960
And see if it starts a stream on at least Twitter, Twitch,

01:39.960 --> 01:44.040
LinkedIn, three or three or four places. So I'm going to hit the

01:44.040 --> 01:47.880
button now and begin. So here we go. Starting the stream now

01:47.880 --> 01:53.200
and it should stream.

01:53.200 --> 01:57.120
So this is about to begin streaming and I think we should

01:57.120 --> 02:01.520
be streaming by now. So let us go check on Twitter to see if

02:01.520 --> 02:03.000
there's a notification on.

02:03.560 --> 02:07.800
Something like stream started so that once the stream starts we

02:07.800 --> 02:08.480
can ignore.

02:09.840 --> 02:13.640
Twitter itself. I think the stream didn't start yet.

02:13.640 --> 02:18.480
Not yet, so there's a. There's a like a delay in in.

02:19.040 --> 02:22.640
I think streaming started looks like streaming started. Let's go

02:22.640 --> 02:27.200
check. So on my profile on my page there should be a live

02:27.200 --> 02:30.920
stream method live stream message. Do I see it?

02:32.240 --> 02:35.960
Yet, yes, it started streaming, so streaming is working on

02:35.960 --> 02:38.200
Twitter. Let's check on LinkedIn.

02:38.200 --> 02:42.880
If LinkedIn is showing us a stream or not, let's go check

02:42.880 --> 02:46.840
that. LinkedIn should also show us a live stream happening

02:46.840 --> 02:51.240
right here on the notifications. Do you see that? Yes, it is.

02:51.240 --> 02:54.960
It is live. We're on live stream. We're talking about, you

02:54.960 --> 02:59.240
know, more Docker today, but before we, you know, I think I

02:59.240 --> 03:02.520
should just ignore the live stream people who are watching

03:02.520 --> 03:05.840
the live stream. This live stream is available to you on

03:05.840 --> 03:09.520
Spotify platforms. It will also get recorded by the way, and

03:09.520 --> 03:12.520
this stream after it gets recorded, it's becomes

03:12.520 --> 03:13.840
available to you.

03:14.400 --> 03:15.720
On Spotify.

03:16.480 --> 03:20.560
Spotify is a music service. It also has podcasts, so this is

03:20.560 --> 03:24.600
where the recordings show up and this is a video podcast. By

03:24.600 --> 03:28.800
the way, just so you know. So yes, you can see videos

03:28.800 --> 03:31.920
recordings from our sessions on to Spotify in this location.

03:31.920 --> 03:35.120
Look for cloud seminar on Spotify. You should be able to

03:35.120 --> 03:38.520
find all the previous recordings like for the last two or three

03:38.520 --> 03:40.880
sessions. I have these recordings available here like

03:40.880 --> 03:44.320
we show on the screen right now.

03:44.920 --> 03:48.760
You should be able to see it on the screen. I think so that's

03:48.760 --> 03:51.960
the Spotify podcast. You should be able to see your video

03:51.960 --> 03:54.680
recordings showing up right here, and if you don't see

03:54.680 --> 03:58.560
videos. Tweet at me because some people are reporting that they

03:58.560 --> 04:02.680
see only audio. No video that's potentially something is wrong,

04:02.680 --> 04:07.520
so I think I fixed it. So now you should be able to see

04:07.520 --> 04:11.520
videos like these more of these coming up showing up right here

04:11.520 --> 04:15.680
in Spotify after 24 hours from the live session live session is

04:15.680 --> 04:18.720
streaming to social media channels and people are actively

04:18.720 --> 04:21.840
participating in Microsoft Teams. So if you want to interact

04:21.840 --> 04:26.160
with me like one on one or many to one, we can do that. That's

04:26.160 --> 04:29.800
what we're doing. By the way, we have people are attending this

04:29.800 --> 04:33.200
session and we are going to begin discussing not bored, but

04:33.200 --> 04:36.400
Docker and Docker compose and Docker files and a little more

04:36.400 --> 04:39.600
little bit more detail about Docker as to how you actually

04:39.600 --> 04:42.480
manage creating images and you know managing your application

04:42.480 --> 04:46.720
sets and you know creating a set of services that you want to be

04:46.720 --> 04:50.240
able to use for your customers. So that's the underlying idea

04:50.240 --> 04:54.880
for today. So let's go back to some description of what the

04:54.880 --> 04:58.720
infrastructure I'm dealing with right now is. So here I have a

04:58.720 --> 05:04.400
machine that I I have it in my hand, which is a Macintosh.

05:05.360 --> 05:09.840
And. What I'm going to do right now is to make sure that

05:09.840 --> 05:12.960
everybody is able to see the screen full screen mode and

05:12.960 --> 05:16.040
then there's no conflict about how things are working out or

05:16.040 --> 05:19.320
how the screen is occupied with other people, not my screen. That

05:19.320 --> 05:23.200
should not be the issue today. I think I fixed that. So with that

05:23.200 --> 05:26.320
said, I want to suppress this little notification in the

05:26.320 --> 05:29.560
bottom left corner, lower thirds, and if you want to see

05:29.560 --> 05:33.280
me, you can see me in the corner or I can hide myself if

05:33.280 --> 05:37.480
you like. So it's totally up to you. If you if you look at my

05:37.480 --> 05:40.560
red, red, you know, red T shirt or not, tell me.

05:41.240 --> 05:44.560
I think you're only interested in more on what I describe as

05:44.560 --> 05:47.760
opposed to looking at my shirt. So let's go begin with that

05:47.760 --> 05:50.880
idea. So I have this Macintosh that I am in my hand.

05:50.880 --> 05:55.960
And then I also have a Linux machine here that Linux machine.

05:55.960 --> 06:03.360
I call it I Mac and it has an IP address of 192.168.1.10 that

06:03.360 --> 06:04.520
runs Docker.

06:06.520 --> 06:10.480
So I'm sitting here. I will connect to this machine and run

06:10.480 --> 06:14.560
whatever we want on this Docker machine. So that's the idea. So

06:14.560 --> 06:18.640
I have an exercise set created already for us to consume and

06:18.640 --> 06:22.760
that is what we will be using today. We use the same thing

06:22.760 --> 06:26.680
last time. We have lots of little exercises in that get

06:26.680 --> 06:28.960
repository, so I will just go and find it.

06:29.560 --> 06:31.040
And that get repo is.

06:32.240 --> 06:33.000
GitHub.

06:36.760 --> 06:39.480
Will be cloud genius.

06:40.280 --> 06:44.480
Slash Docker files. That's the repository I think.

06:44.480 --> 06:49.160
And it is slightly updated to include the latest images

06:49.160 --> 06:53.240
created by. Jason Wilder, who creates engine X proxy images.

06:53.240 --> 06:56.920
I updated those images and pushed new content to this

06:56.920 --> 06:59.840
repository already, so I'm going to take this link.

07:00.880 --> 07:05.240
From here and tweet it out to the Twitter stream that's going

07:05.240 --> 07:09.000
on so that people people are watching it live can actually.

07:09.000 --> 07:12.840
You know, understand what we are looking at. So the profile

07:12.840 --> 07:17.560
should show me in the stream and below that stream I'm going to

07:17.560 --> 07:22.400
tweet. We are using this get report today.

07:24.600 --> 07:27.680
And tweet. So that goes.

07:28.480 --> 07:32.560
Next, so I will now bring that get repository down to my Docker

07:32.560 --> 07:36.720
machine right here. That's what I want to bring it down here, so

07:36.720 --> 07:39.560
I will do exactly that. I'll bring up a.

07:39.560 --> 07:44.000
Command line and then actually I use Vegas Codium to connect to

07:44.000 --> 07:48.160
that machine using remote SSH. The way you do that is through

07:48.160 --> 07:50.360
this button. Remote Explorer button.

07:52.520 --> 07:55.320
This is how it looks like this button or remote Explorer. You

07:55.320 --> 07:58.360
click on that and then you connect to any of the machines

07:58.360 --> 08:01.960
you have in your office or your home or whatever. So I want to

08:01.960 --> 08:05.400
go to this machine, so that's where I want to go. So I connect

08:05.400 --> 08:07.800
like that. And then I open up that folder set.

08:07.800 --> 08:11.680
Now in that machine I will also open terminal on one side. So

08:11.680 --> 08:14.880
here we have terminal the command line. I will bring it

08:14.880 --> 08:18.560
down so that it becomes visible to you. Make it a little bit

08:18.560 --> 08:21.360
bigger and connect to that machine out there. The iMac

08:21.360 --> 08:24.480
machine I mentioned here. I have that folder called Docker files

08:24.480 --> 08:28.280
already available, which is not what I want to begin with, so I

08:28.280 --> 08:31.760
want to remove it so that I'm basically doing exactly the way

08:31.760 --> 08:35.760
you will have in a machine that you will be running on. So I'm

08:35.760 --> 08:39.480
going to open that Docker files folder completely and then get

08:39.480 --> 08:41.520
clone the whole thing again.

08:41.520 --> 08:45.480
From from this location so that.

08:46.200 --> 08:48.880
Clone copy clone link I copied and bring it here.

08:49.920 --> 08:53.480
So that Docker files folder comes down, so that's the folder

08:53.480 --> 08:57.400
now I have here. So it's a fresh clone from git repository.

08:58.000 --> 09:00.120
So now we're going to use it.

09:01.040 --> 09:02.880
And that repository shows up.

09:02.880 --> 09:05.080
In this location.

09:06.080 --> 09:08.800
Inside my iMac.

09:08.800 --> 09:11.640
Which is a Linux machine by the way, just so you know.

09:11.640 --> 09:17.200
So what I want to do now is to describe to you the.

09:17.200 --> 09:20.640
Simplest possible way to run some design, so I'll describe

09:20.640 --> 09:24.480
the design to use to what I'm going to implement and then

09:24.480 --> 09:27.960
then actually implemented like live. So that's the idea. So

09:27.960 --> 09:31.760
let's let's begin by explaining to you what I intend to do.

09:31.760 --> 09:36.880
And then I'll do it. What I intend to do is I want to run

09:36.880 --> 09:42.040
some simple service called who who am I?

09:42.880 --> 09:44.480
That's the container I want to run.

09:45.080 --> 09:50.440
And the only thing this container does is says I am.

09:51.560 --> 09:53.000
And then the container ID.

09:56.120 --> 09:58.880
That's all it emits on the output.

09:58.880 --> 10:02.120
On port number 8000 or some some port number right that

10:02.120 --> 10:05.480
it emits that that's the container. So I want to see the

10:05.480 --> 10:09.280
output here from that container, which means I need to run that

10:09.280 --> 10:12.040
container somewhere and I want to.

10:13.520 --> 10:17.240
You know, put this behind a reverse proxy.

10:19.080 --> 10:23.120
A reverse proxy is something that gives you ability to do a

10:23.120 --> 10:27.400
variety of things. One of them is to run multiple services like

10:27.400 --> 10:32.080
this is one and there are more and there are more. You can run

10:32.080 --> 10:34.400
these services behind a reverse proxy.

10:37.040 --> 10:39.600
And then this becomes the front end to the customer.

10:42.000 --> 10:46.680
That's the idea. So for right now in our context, what I will

10:46.680 --> 10:49.200
be doing is I will not have this.

10:51.200 --> 10:53.480
I will have only this one service.

10:53.480 --> 10:58.560
Running the who am I container, which shows me this output. I am.

10:59.760 --> 11:00.600
Container ID.

11:01.360 --> 11:05.800
And I will be this person looking at the reverse proxy.

11:06.360 --> 11:09.640
And so that reverse proxy itself is going to be another container.

11:13.400 --> 11:14.880
So these two containers we will have.

11:15.800 --> 11:19.360
This one and this one and we will connect them in a way we

11:19.360 --> 11:22.280
would want them to be connecting and then we'll interact with

11:22.280 --> 11:25.560
them to see if it actually works the way we wanted to be

11:25.560 --> 11:26.760
working. So here.

11:27.520 --> 11:28.280
I will.

11:29.480 --> 11:33.040
Just quickly cheat so I don't have to memorize the port

11:33.040 --> 11:36.280
numbers, but I'm going to looking at this code and I'll

11:36.280 --> 11:39.200
now remember what ports that using that they're using. This

11:39.200 --> 11:40.800
thing is using port number 8000.

11:41.920 --> 11:46.320
This thing runs on port number 80 and it maps to the actual

11:46.320 --> 11:47.120
machine I Mac.

11:47.120 --> 11:51.560
On also on port number 80 by default, so that's the mapping.

11:53.320 --> 11:57.560
And I want this reverse proxy to connect to this port on this

11:57.560 --> 12:00.240
container. That's what I would like to have.

12:01.240 --> 12:05.360
So this is the outlay of the or the design that I want to

12:05.360 --> 12:08.400
implement the way I would implement that design will be

12:08.400 --> 12:12.320
something like this. This is a compose file Docker compose.

12:12.320 --> 12:16.040
So here you see that there are two services.

12:18.200 --> 12:19.520
This is one of them.

12:20.400 --> 12:24.680
And this is another you will find by the way you will find

12:24.680 --> 12:26.520
this file in the step by step.

12:27.040 --> 12:31.120
Ocean inside your Docker files repository. That's where you

12:31.120 --> 12:32.640
will actually find it.

12:33.840 --> 12:37.080
So I mentioned these two containers. Let's go look at

12:37.080 --> 12:38.280
them one more time.

12:38.280 --> 12:40.240
So I'm going to it is my ink.

12:42.600 --> 12:46.360
And here are those two containers. This is one of them.

12:46.360 --> 12:49.800
This is another one that would be looking at right here.

12:51.400 --> 12:55.880
Number one, number two now when I instantiate you will see that

12:55.880 --> 13:00.080
the connections and the ports are how they map it out. You

13:00.080 --> 13:04.880
will see that. As I will explain to you this container, let us

13:04.880 --> 13:09.960
understand this one first. It is exposing itself on port number

13:09.960 --> 13:10.640
8000.

13:12.040 --> 13:14.200
And it wants to.

13:15.080 --> 13:16.360
Pretend to.

13:17.480 --> 13:22.640
Be this DNS name it wants to hold. It wants to be called by

13:22.640 --> 13:27.560
that name. You call me you know Prashant or call me Nilesh.

13:27.560 --> 13:32.080
Whatever that is right, so you assign yourself a name. So this

13:32.080 --> 13:35.480
container wants that people should call me by that name.

13:36.400 --> 13:40.840
My name is who.bar.com. That's what it's announcing that I

13:40.840 --> 13:42.920
want to be called by that name.

13:43.600 --> 13:47.640
That is called a virtual host announcement. This announcement

13:47.640 --> 13:49.560
is listened to by this container.

13:50.600 --> 13:52.280
Through the Docker socket.

13:53.920 --> 13:57.880
And through that it will know where is food.bar.com. That's

13:57.880 --> 14:01.680
the name this container wants to use. So through that

14:01.680 --> 14:05.400
announcement this will know OK food.bar.com means this dude. I

14:05.400 --> 14:09.040
mean this container. That's how the announcement happens.

14:10.000 --> 14:13.440
And now when you run this container, this runs NGINX

14:13.440 --> 14:17.240
proxy. Which is a container image created by Jason that I

14:17.240 --> 14:21.080
mentioned briefly last time, but it's the same image that we are

14:21.080 --> 14:24.800
using today and it maps port number 82 port number 80 like

14:24.800 --> 14:26.600
this port to that port on the machine.

14:26.600 --> 14:30.560
This is the machine port. This is the container port.

14:31.040 --> 14:35.200
So we want to make sure that this runs properly. What I know

14:35.200 --> 14:39.480
in my case in your case on a fresh new machine you will not

14:39.480 --> 14:43.600
have any problems. In my case I have a ton of services running

14:43.600 --> 14:47.080
already on this machine right here. Lots of them and port

14:47.080 --> 14:48.640
number 80 is occupied.

14:49.360 --> 14:50.920
So what does that mean?

14:51.920 --> 14:56.200
This port number 80 I cannot use. If I run it like that it

14:56.200 --> 14:59.600
will cause a conflict, so I'm changing it, changing it to

14:59.600 --> 15:03.680
something else like I like to use this port. They just made up

15:03.680 --> 15:07.240
port. You can select any port between say something like you

15:07.240 --> 15:11.960
know number 3000. All the way to 65535 you can pick any random

15:11.960 --> 15:15.480
port as long as it is not occupied already, you will

15:15.480 --> 15:19.600
succeed. If it is occupied, it will cause a conflict and it

15:19.600 --> 15:21.080
will fail, which is fine.

15:22.280 --> 15:26.000
So I'm going to choose this number 8760 as my port on the

15:26.000 --> 15:29.720
machine side, which means I need to edit that file little bit

15:29.720 --> 15:30.200
like that.

15:32.520 --> 15:36.640
And I hope you can see the the font is not too small. I guess

15:36.640 --> 15:41.000
you should be able to see it 8760 and with that change in my

15:41.000 --> 15:43.960
implementation in my composition or Docker compose file, I want

15:43.960 --> 15:46.720
to run these two containers running. These two containers

15:46.720 --> 15:50.280
are very simple, like literally one command does it.

15:51.120 --> 15:54.840
And so I will run that one command is defined in this file.

15:54.840 --> 15:58.680
It is this command. Execute this one command that takes up the

15:58.680 --> 16:02.280
YAML file and runs it. So let's go take that YAML file.

16:03.120 --> 16:07.320
And go to Docker files and go to the step by step folder and

16:07.320 --> 16:09.560
then look at that Docker compose file right there.

16:11.160 --> 16:15.680
This file. Is what I want to invoke through Docker compose,

16:15.680 --> 16:18.280
so I will run line number 5.

16:19.600 --> 16:23.600
Literally, that's the line I'm going to execute Docker compose

16:23.600 --> 16:28.680
1 dash F. For the reference to the file I want to use and then

16:28.680 --> 16:29.440
up. And as D.

16:30.800 --> 16:31.880
Look at it again.

16:33.000 --> 16:36.280
Let's see Docker PS dash A. I have lots of containers already

16:36.280 --> 16:40.360
running, so I want to make sure that I am clean in terms of what

16:40.360 --> 16:43.320
containers I'm running and how are they running and then

16:43.320 --> 16:46.040
nothing else is running from a previous attempt at these

16:46.040 --> 16:49.200
exercises. I think I see that there are certain things running

16:49.200 --> 16:52.680
here that I don't want to be running like engine X proxy is

16:52.680 --> 16:56.520
running and all that. So I need to shut those guys down. I will

16:56.520 --> 16:59.840
do that like right now, so I need to kill these containers.

17:00.760 --> 17:04.920
Uh? Which one is 6 hours ago that these guys that the top

17:04.920 --> 17:08.920
three containers here I want to kill them the 12 and three they

17:08.920 --> 17:14.480
are from a. A run that I did 6 hours ago. I need to kill them.

17:14.480 --> 17:17.440
I will kill these three containers by typing something

17:17.440 --> 17:20.800
like Docker RM dash F and then container ID.

17:20.800 --> 17:24.960
Another container ID and the third container ID and I kill

17:24.960 --> 17:29.560
all three of them. And I did not type the command properly. It

17:29.560 --> 17:34.120
should be just RM dash F, not RF. That should kill all the three

17:34.120 --> 17:38.120
containers that I wanted to die. Now I'll see my doctor containers

17:38.120 --> 17:41.240
running right now and I don't see anything that is.

17:41.840 --> 17:45.640
Not expected, so this is clean start. I just ignore all these

17:45.640 --> 17:49.240
guys. They're not supposed to be a part of our exercise today.

17:49.240 --> 17:54.320
So what I want to do now is to run that command, which is line

17:54.320 --> 17:57.640
number 5. So I will take that command.

17:59.000 --> 18:02.200
Here and execute it. Like that.

18:02.880 --> 18:06.680
So it should start up three containers basically, so let's

18:06.680 --> 18:09.600
go see that. What did it do?

18:11.480 --> 18:14.840
It started one contain or two containers, not three. So I'll

18:14.840 --> 18:18.840
describe what the third one is. So this is not a container, but

18:18.840 --> 18:20.520
it creates a network.

18:21.720 --> 18:25.200
It started an engine X proxy reverse proxy container and it

18:25.200 --> 18:28.880
started a who am I container for the two containers started and

18:28.880 --> 18:32.160
a network created for these guys to communicate to each other.

18:32.160 --> 18:35.040
That's the idea behind this network created and two

18:35.040 --> 18:38.520
containers created. So now what we have is exactly what we

18:38.520 --> 18:40.320
expected in this picture.

18:41.240 --> 18:44.680
Network that connects these guys and this container number one or

18:44.680 --> 18:47.880
number two and this container number two or number one. What

18:47.880 --> 18:51.000
about numbering is important? Not not relevant here in this

18:51.000 --> 18:54.560
context. So let me clean out my ink a little bit.

18:55.320 --> 18:59.320
And change to a white sheet of paper or yellow sheet of paper.

18:59.320 --> 19:03.040
There we go new sheet and now let us go evaluate what we have.

19:04.720 --> 19:07.720
So I want to test these containers, so let's go see

19:07.720 --> 19:08.320
what we have.

19:12.320 --> 19:14.720
Compose PS dash a.

19:14.720 --> 19:18.320
Oh, sorry, where to pass a file reference to the file we're

19:18.320 --> 19:22.000
using, which is dash F1 dot something no dash F1 dot.

19:23.480 --> 19:26.760
Tab please no file names.

19:27.480 --> 19:29.320
This the file I want to pass.

19:30.320 --> 19:35.680
So Docker compose dash F that file name and then show me the

19:35.680 --> 19:40.000
PS process is running under this Docker compose file. It will

19:40.000 --> 19:43.680
show you the two containers running. Here is the container

19:43.680 --> 19:47.000
name. For the first one.

19:48.000 --> 19:51.400
And the container name for the second one. So we have these two

19:51.400 --> 19:54.440
containers already running and now we want to examine what are

19:54.440 --> 19:58.040
they doing for us. So in our picture that I had drawn before,

19:58.040 --> 20:01.320
I'll draw that picture one more time, which is this container

20:01.320 --> 20:02.920
here called who am I?

20:02.920 --> 20:04.360
And another container here.

20:06.760 --> 20:10.440
Called engine X proxy. It is talking on running on port

20:10.440 --> 20:14.280
number 80 locally, but port number 8760 on the IMAX side and

20:14.280 --> 20:17.800
that's the connection that we have. Plus, this proxy is also

20:17.800 --> 20:21.680
speaking over the network that it created on this port to that

20:21.680 --> 20:26.880
who am I container. So what I can do is sitting on the Mac.

20:28.320 --> 20:32.880
Read what this guy is telling me and I'll have to ask it for the

20:32.880 --> 20:35.520
name of this person is food.bar.com.

20:35.520 --> 20:38.120
And so that is exactly what I will do now.

20:39.480 --> 20:43.800
And how do I test it? What I want to be able to do is curl

20:43.800 --> 20:47.840
it to this curl thing we tried a last time and I'll explain this

20:47.840 --> 20:51.320
a little bit clearly so that you will understand the complexity

20:51.320 --> 20:55.120
of curl. Once you get this idea of how to use curl to tweak

20:55.120 --> 20:57.760
around and inspect various running containers in a complex

20:57.760 --> 21:01.600
setup, you will have a whole lot easier time dealing with actual

21:01.600 --> 21:05.040
containers in real life. So as you will see in the next

21:05.040 --> 21:08.880
command, as you will see in this command on line number 9, let's

21:08.880 --> 21:13.200
go dissect that a little bit. What am I doing? I'm asking the

21:13.200 --> 21:17.280
curl command. For the response coming from a machine running or

21:17.280 --> 21:20.120
container running on localhost at port number.

21:22.400 --> 21:26.800
This is not correct because I changed it 8760. That's how it

21:26.800 --> 21:31.280
should be. So tell me whatever is coming back at this address.

21:31.280 --> 21:33.520
And I want to actually talk to.

21:34.560 --> 21:39.120
This container on the back side of your engine X proxy. So when

21:39.120 --> 21:41.560
I run this curl command on the iMac.

21:41.560 --> 21:43.720
It hits the proxy.

21:44.680 --> 21:45.920
At localhost.

21:46.720 --> 21:52.520
8760 which then hits the reverse proxy at port number 80. The

21:52.520 --> 21:57.840
container inside which then hits port number 8000 on the 2MI

21:57.840 --> 21:59.400
machine or container.

21:59.400 --> 22:01.720
And then gets me the response back.

22:04.840 --> 22:09.560
That's how you will see the flow of this. So let me you know

22:09.560 --> 22:13.240
explain this one more time clearly so that you will get it.

22:13.240 --> 22:16.440
The way I will. The way I will modify this command is.

22:17.240 --> 22:22.760
76. This command specifically this portion of localhost 8760

22:22.760 --> 22:29.480
refers to the iMac. Which means. If I.

22:31.240 --> 22:35.880
If I run this command like curl and then type the H which is

22:35.880 --> 22:40.680
past this header. I want to talk to this header which has a

22:40.680 --> 22:45.400
host called foo.bar.com. That is the header I want to pass and

22:45.400 --> 22:50.520
talk to the machine locally on the iMac. I am on the iMac so

22:50.520 --> 22:51.080
localhost.

22:51.080 --> 22:56.160
On the iMac, port number 8760. Show me what it gives me and

22:56.160 --> 23:00.640
what will happen is you will see that the container who am I

23:00.640 --> 23:04.120
will respond back. And it says I am the container ID.

23:05.480 --> 23:07.720
So if you now look at the containers running.

23:08.520 --> 23:12.240
The container ID for the who am I container this container ID

23:12.240 --> 23:16.240
is responding back with the ID of the container which is 6

23:16.240 --> 23:19.720
sorry 6CAA55 whatever that number is. So that is the

23:19.720 --> 23:23.000
container that is responding back. How is it going through

23:23.000 --> 23:27.400
all the way to the back end of that container is through these

23:27.400 --> 23:31.000
references. This reference is the machine called iMac because

23:31.000 --> 23:32.920
that's where I'm running locally.

23:33.600 --> 23:36.000
This reference is to the port that I am using.

23:37.240 --> 23:42.560
Here. On the machine which is mapping to port number 80 on the

23:42.560 --> 23:43.880
proxy container.

23:43.880 --> 23:48.160
And this proxy is then looking for this host name.

23:49.560 --> 23:55.320
Which who am I has advertised that I am foo.bar.com and

23:55.320 --> 23:56.120
therefore.

23:57.560 --> 24:02.360
This who am I receives that request for curd and it response.

24:03.600 --> 24:07.560
Is given out like that, so that's the response you will see

24:07.560 --> 24:10.000
that you saw. We can you know.

24:10.000 --> 24:14.720
Make a note of what that ID number is like 6CAA that number

24:14.720 --> 24:18.240
so keep track of that and I will erase my ink.

24:19.800 --> 24:24.320
And then I want to kill the who am I container.

24:25.120 --> 24:28.800
Like that container ID I want to die. So how do I kill a

24:28.800 --> 24:32.000
container specific container Docker RM dash F kill it? I

24:32.000 --> 24:32.600
killed it.

24:34.080 --> 24:38.280
So now I'll I'll Docker compose up the whole thing.

24:38.280 --> 24:42.960
One more time. What will happen as a consequence is that the

24:42.960 --> 24:44.960
who am I container?

24:46.120 --> 24:49.880
By the way, right now only one container is running. Who am I

24:49.880 --> 24:53.280
is dead because I killed it. You can see that only engine

24:53.280 --> 24:57.040
proxy is running. Now if I bring the whole thing back again,

24:57.040 --> 25:00.000
like I did the first time, this brings up that who am I again?

25:01.840 --> 25:03.000
See this who am I?

25:03.920 --> 25:04.800
Got started.

25:04.800 --> 25:07.400
And proxy was running already.

25:09.280 --> 25:13.200
So now what this does is it generates a new ID for that who

25:13.200 --> 25:16.680
am I container and you will see if I curl one more time.

25:16.680 --> 25:21.520
Like that. And say give me the response. You will see that this

25:21.520 --> 25:25.560
time the container ID is different. Earlier it was this.

25:27.040 --> 25:28.200
And now it is this.

25:30.320 --> 25:31.600
This is the one I killed.

25:31.600 --> 25:33.840
And I started a fresh compose.

25:34.840 --> 25:37.200
It started this new who am I?

25:37.920 --> 25:40.360
Which is what is responding back with its ID.

25:41.080 --> 25:45.000
So we are able to actually reach out to a container behind a

25:45.000 --> 25:48.200
proxy and connect through it through a reverse proxy and get

25:48.200 --> 25:51.680
the response back. That's how exactly you know a website opens

25:51.680 --> 25:55.480
basically by the way, so website will pass something like

25:55.480 --> 25:56.880
food on bar.com.

25:57.680 --> 26:01.400
On the browser on the on the editor, you know, you can

26:01.400 --> 26:04.840
go to address bar and you would type something. It will send a

26:04.840 --> 26:07.640
request back with that header and send out to the destination

26:07.640 --> 26:10.440
address wherever that machine lies. It might have a proxy in

26:10.440 --> 26:13.640
front. It may not have a proxy, but that's where the response

26:13.640 --> 26:15.960
comes back to you in the browser window.

26:15.960 --> 26:20.600
So now what I want to do is to tell you that this food on

26:20.600 --> 26:22.120
bar.com is a made up name.

26:23.040 --> 26:26.280
You know there is no such thing called food on bar.com. At

26:26.280 --> 26:30.840
least I don't know off and so what I want to do is go on my

26:30.840 --> 26:33.120
Macintosh. This is your.

26:33.840 --> 26:38.040
This this container that this command line you're looking at

26:38.040 --> 26:43.320
is my I Mac, so it's the Linux box so you can see that you

26:43.320 --> 26:48.160
name is a Linux machine right there, Linux. So what I want to

26:48.160 --> 26:52.600
do is get back to my local I Mac, sorry local whatever this

26:52.600 --> 26:55.120
Mac. So this is not a Linux machine.

26:55.120 --> 27:00.360
It's Darwin on this machine. I want to make a modification.

27:01.400 --> 27:04.840
To the host file. And what I want to do is.

27:05.800 --> 27:09.360
Show you the modification I already made. What did I make?

27:09.360 --> 27:10.000
Let's go see.

27:11.840 --> 27:14.440
You see that I already made this change 6 hours ago.

27:15.800 --> 27:17.120
And I added this line.

27:17.840 --> 27:22.560
As a hack, this is basically a DNS hack. I modified.

27:22.560 --> 27:26.840
And my host file and said, you know, 192 168 1.10.

27:28.360 --> 27:32.800
Is where food on bar.com lives. That's a local overrided. This

27:32.800 --> 27:36.600
hack will run only on the on the machine that I'm on on this Mac.

27:37.600 --> 27:38.720
And nowhere else.

27:39.520 --> 27:42.680
And so if I now on the Mac open food on bar.com.

27:43.600 --> 27:49.160
The traffic will go to 192 168 1.10, which is the I Mac.

27:49.160 --> 27:54.000
But. I wanted the traffic to go on port number 8760.

27:55.040 --> 28:00.000
On the food on bar.com name, so I will open up a browser like

28:00.000 --> 28:01.320
this. HTTP.

28:02.120 --> 28:03.400
Colon slash slash.

28:04.480 --> 28:06.720
And then I'll say food on bar.com.

28:09.840 --> 28:14.880
And then I'll put a colon and put 8760. What will happen as a

28:14.880 --> 28:18.960
consequence in this fictitious name that I have assigned in my

28:18.960 --> 28:23.120
htc host file on the Mac will recognize that this address

28:23.120 --> 28:24.680
actually is mapping to.

28:26.080 --> 28:26.920
That address.

28:28.480 --> 28:30.320
192 168 1.10.

28:31.240 --> 28:34.120
So now it will then transmit that traffic to the Mac.

28:35.040 --> 28:38.680
To the I Mac where it will run into this machine, the I Mac

28:38.680 --> 28:41.680
machine at that port, because that's what we're passing as a

28:41.680 --> 28:45.160
reference. And then it goes through the same process like we

28:45.160 --> 28:48.680
did before. This time we have one step away from the actual

28:48.680 --> 28:51.920
address that that we had in our hand. What does it mean?

28:52.640 --> 28:56.480
Let me raise my ink, go back to my illustrations here and what

28:56.480 --> 29:00.440
I'm going to tell you is that this machine that I am dealing

29:00.440 --> 29:02.240
with right now is an M1 Mac.

29:02.240 --> 29:05.280
And I have modified my Etsy host file.

29:08.840 --> 29:12.320
And in that host file modification, I told my machine

29:12.320 --> 29:19.800
that foo.bar.com actually is 192.168.1.10.

29:19.800 --> 29:23.400
That's where you should go, so it goes there. Now let us see

29:23.400 --> 29:27.400
if we can open a browser and see we can see what this guy is

29:27.400 --> 29:31.080
telling us. Does it reach there and does it even give us the

29:31.080 --> 29:34.880
answer we expect to get, which is I am some ID. That's what I'm

29:34.880 --> 29:38.320
expecting to get from this who am I container. So I'm going to

29:38.320 --> 29:39.280
open up my browser.

29:39.280 --> 29:46.680
And then. Local host, not local host, foo.bar.com.

29:46.680 --> 29:53.320
http colon slash slash foo.bar.com colon 8760 and let's

29:53.320 --> 29:54.520
see what pops up.

29:56.480 --> 29:57.680
And what do I see?

29:58.600 --> 30:02.800
I am some number. This is exactly what we expected.

30:03.800 --> 30:08.040
But we who is sending us this response? The response is

30:08.040 --> 30:12.200
coming back from. From this guy.

30:14.760 --> 30:17.560
And we are going from the M1 Mac.

30:19.120 --> 30:23.480
To this machine which is running on the which are running

30:23.480 --> 30:27.440
containers on that port which maps to the proxy container on

30:27.440 --> 30:31.680
this port and this proxy talks to the who am I container on

30:31.680 --> 30:35.440
that port and send the response back through the proxy proxy to

30:35.440 --> 30:39.560
that Mac to this M1 Mac. And then you see it in the browser.

30:41.360 --> 30:46.600
So that was the overall detail of flow of graphic from browser.

30:47.480 --> 30:51.560
All the way to the back end and back to the browser. So that's

30:51.560 --> 30:54.880
the communication pad that users saw in a very simple trivial

30:54.880 --> 30:56.600
example with a Docker compose file.

30:57.560 --> 31:01.560
That we used which we use this one. This file right? That's

31:01.560 --> 31:05.880
what we used. So in your case you will have this 8760. You

31:05.880 --> 31:08.960
will not be using it. We will probably not be running random

31:08.960 --> 31:12.440
services on your on your computer or you you can like a

31:12.440 --> 31:15.280
renter cloud cloud machine somewhere in some cloud and you

31:15.280 --> 31:17.880
know use the same set exercise exactly like I'm showing you.

31:17.920 --> 31:20.440
It will work just the same way and you will not even have the

31:20.440 --> 31:24.080
port conflict like I run into. And so you have to take care of

31:24.080 --> 31:27.000
that and not busy. You don't have to do anything. It just

31:27.000 --> 31:28.840
follow the instructions and you should succeed.

31:28.840 --> 31:33.520
Having said there was just one simple example of who am I? I'll

31:33.520 --> 31:37.440
now add a little bit of complexity to this and make it

31:37.440 --> 31:38.560
slightly more complex.

31:40.920 --> 31:41.880
And that example.

31:42.800 --> 31:43.400
Is here.

31:45.280 --> 31:47.440
It's the number two Docker compose file.

31:48.400 --> 31:50.760
It runs WordPress and it has.

31:52.280 --> 31:53.640
Let's see how many things.

31:55.920 --> 31:56.280
3.

31:56.280 --> 32:00.960
And a network. So let's go describe this overall overall.

32:02.120 --> 32:05.880
By the way, before I jump, let me clean up what we just created

32:05.880 --> 32:10.280
here. So what does that mean? I need to go back and quit from

32:10.280 --> 32:11.680
the from the Macintosh.

32:13.200 --> 32:15.320
So I quit.

32:16.560 --> 32:20.720
Then I go back to the I Mac, which is a Docker machine, and

32:20.720 --> 32:22.160
that's where I want to.

32:22.160 --> 32:23.040
Shut down.

32:23.040 --> 32:26.960
This Docker compose, so I'll say Docker compose down, so it

32:26.960 --> 32:30.880
shuts them down and removes the network and removes the who am

32:30.880 --> 32:34.320
I? Container removes the proxy and all that is cleaned, cleaned

32:34.320 --> 32:38.280
out completely. Having having seen that I will now jump over

32:38.280 --> 32:42.360
to describing to you. By the way, this guy is dead. If you

32:42.360 --> 32:46.080
open the browser now, try again later. Nothing works because the

32:46.080 --> 32:49.360
machine is not running anymore. Like containers are not running

32:49.360 --> 32:50.920
anymore, so it is dead.

32:50.920 --> 32:55.080
Having seen that, let us now describe the next design as to

32:55.080 --> 32:59.920
how we can implement this design and how is it written down in a

32:59.920 --> 33:03.600
Docker compose file. So that's what that's what we will will

33:03.600 --> 33:08.120
discuss a little bit. So in this let me just read the compose

33:08.120 --> 33:12.080
files. I can draw the picture properly, so we have an engine

33:12.080 --> 33:15.200
X proxy. We have a database and WordPress and volume and.

33:15.920 --> 33:18.120
A network. So five things.

33:18.120 --> 33:20.560
So I'll describe those things to you.

33:22.960 --> 33:25.680
OK, I'll draw them on the left half.

33:26.960 --> 33:27.760
And.

33:31.120 --> 33:34.720
You can reference them in the right half on the code. I think

33:34.720 --> 33:37.840
it is too small, probably, so I'll make it slightly bigger

33:37.840 --> 33:41.600
almost slightly. Yeah, there we go. So we have the services

33:41.600 --> 33:45.320
available now. OK, good, let's go begin so.

33:45.320 --> 33:50.400
Let me draw it out so we have that I'm act that I'm dealing

33:50.400 --> 33:55.600
with. In that I'm act I need to have a network so some some

33:55.600 --> 33:56.720
network here.

33:58.120 --> 34:01.160
Which automatically gets created through line number 41 here

34:01.160 --> 34:05.560
right? On the on the right side, 41 that creates a network

34:05.560 --> 34:08.240
called CG. That's the name that I chose.

34:09.920 --> 34:14.400
Then we have a volume in line number 38. Volume basically

34:14.400 --> 34:17.280
means storage space storage.

34:19.080 --> 34:20.280
Also known as volume.

34:22.400 --> 34:27.240
And this volume is assigned a name called DB underscore data.

34:29.560 --> 34:33.680
So asking Docker to give us a volume or storage place for

34:33.680 --> 34:37.000
database to consume. That's the idea behind this storage

34:37.000 --> 34:37.760
allocation.

34:39.440 --> 34:43.240
So we are looking for getting some storage, getting a network

34:43.240 --> 34:47.080
source and then we will instantiate a WordPress container.

34:48.560 --> 34:50.920
Will also instantiate a database container.

34:52.560 --> 34:54.720
And will also instantiate a reverse proxy.

34:56.520 --> 35:00.560
That reverse proxy again I need to run it on a different port

35:00.560 --> 35:04.120
because my ports are occupied. And that's the mapping we have

35:04.120 --> 35:05.040
to establish.

35:08.680 --> 35:11.560
That is this container reverse proxy container same like

35:11.560 --> 35:16.240
this. Same exact thing, except I need to change this port 8760.

35:16.240 --> 35:18.320
So I did that.

35:19.840 --> 35:22.640
And that's the reason I need to do because my machine is.

35:23.480 --> 35:26.920
Running a bunch of other things, so it is already taken over the

35:26.920 --> 35:29.280
port number 80, so it's not available anymore right now.

35:30.040 --> 35:33.520
Now let us see. Look at this container WordPress container

35:33.520 --> 35:37.280
which is exposing itself on the container side at port number

35:37.280 --> 35:37.760
80.

35:37.760 --> 35:42.440
And it wants to be called the same name foo.bar.com.

35:45.600 --> 35:48.640
So my name is foo.bar.com. That's what it says.

35:49.680 --> 35:50.200
Fine.

35:51.280 --> 35:51.800
Next.

35:53.040 --> 35:55.800
What do we have is the third container is this.

35:56.840 --> 35:58.240
Which is a database container.

35:59.040 --> 36:03.560
This time as you will see that I am using MySQL as opposed to

36:03.560 --> 36:07.680
MariaDB, so it's just giving you a flavor.

36:09.040 --> 36:11.960
And so that is this container right there.

36:18.160 --> 36:20.200
And this container uses this volume.

36:21.520 --> 36:25.280
The data that it wants to store the data and database data.

36:26.160 --> 36:27.720
Is stored in this volume.

36:27.720 --> 36:33.200
And this is referenced right here.

36:35.960 --> 36:39.880
So that's the database storage location that is assigned to a

36:39.880 --> 36:43.880
location where MySQL expect to store the database data, which

36:43.880 --> 36:47.840
is where libmySQL and that's where this container will store

36:47.840 --> 36:50.600
the data and will be preserved in this storage location

36:50.600 --> 36:54.240
allocated to you by Docker. So Docker gives you storage system.

36:54.240 --> 36:58.120
That's what you can consume it here like that.

36:58.120 --> 37:00.360
So that was database and the storage for that.

37:01.720 --> 37:02.400
Similarly.

37:03.160 --> 37:05.480
This container is used by this container.

37:06.400 --> 37:07.960
WordPress will use database.

37:09.120 --> 37:11.760
See WordPress depends on database.

37:14.600 --> 37:17.680
It depends on that container, so that means the database

37:17.680 --> 37:20.320
container needs to be up and running before WordPress

37:20.320 --> 37:22.200
container is set to be ready.

37:22.200 --> 37:22.920
And.

37:24.200 --> 37:28.840
It has a name that it wants to call itself by that name

37:28.840 --> 37:34.680
foodonbar.com. It is mapping itself to WordPress DB, which is

37:34.680 --> 37:40.120
this container. On port number 3306, which is where MySQL runs.

37:41.840 --> 37:46.280
It has a user called username and a password called password,

37:46.280 --> 37:48.920
which is the same thing I have signed here.

37:48.920 --> 37:50.560
The username is username.

37:51.440 --> 37:55.440
And password is password. Now this is a stupid idea. Don't do

37:55.440 --> 37:59.000
this in production, but I do these things for simplicity for

37:59.000 --> 38:02.520
I don't have to type because I told you probably I'm laziest

38:02.520 --> 38:06.320
you can ever imagine like really the most lazy person on the

38:06.320 --> 38:07.680
planet is probably me.

38:08.600 --> 38:12.360
And so I don't want to even type username and password, so I

38:12.360 --> 38:14.720
just assign them so that it automatically picks up.

38:14.720 --> 38:19.440
As you will see, so that's the WordPress container here.

38:21.920 --> 38:23.560
And I will erase my ink now.

38:24.800 --> 38:27.360
And reference the third container, which is this one.

38:28.320 --> 38:30.480
And as you can see, the port mapping.

38:31.040 --> 38:35.400
Is already discussed in the previous example, and that's

38:35.400 --> 38:39.160
pretty much it. It also looks at Docker socket so it can read

38:39.160 --> 38:41.760
the names that you're requesting. For example.

38:41.760 --> 38:44.040
This name here.

38:45.320 --> 38:47.560
Virtual host is picked up.

38:48.720 --> 38:54.640
By this volume mapping so that engineers reverse proxy that we

38:54.640 --> 38:59.480
have is aware of the name that this container is expecting to

38:59.480 --> 39:01.840
use. Food on bar.com.

39:02.720 --> 39:06.800
And so anytime somebody from the outside says give me what is

39:06.800 --> 39:10.200
showing on food on bar.com, the request hit.

39:10.200 --> 39:14.880
The request hit the machine on that port 8760, which then

39:14.880 --> 39:18.600
transfers over to the reverse proxy and reverse proxy knows

39:18.600 --> 39:20.960
where is food on bar.com because of that label.

39:21.480 --> 39:23.640
32 line 32.

39:24.840 --> 39:25.520
This level.

39:26.960 --> 39:31.040
So then sends the traffic over to WordPress. You can have you

39:31.040 --> 39:34.160
know multiple different things running all behind the same

39:34.160 --> 39:37.600
reverse proxy with different names and you can run multiple

39:37.600 --> 39:40.200
services all behind one reverse proxy.

39:41.240 --> 39:44.040
That's the underlying idea of using a reverse proxy. We're

39:44.040 --> 39:46.920
just using one example right now. We can actually run

39:46.920 --> 39:49.720
multiple things behind one reverse proxy on one machine,

39:49.720 --> 39:52.680
multiple websites, multiple services, whatever else you want.

39:52.680 --> 39:57.320
It's not just websites anything. As long as they have a unique

39:57.320 --> 40:01.000
name assigned. Reverse proxy will understand and associate

40:01.000 --> 40:04.200
them appropriately with this guy, that guy, this guy,

40:04.200 --> 40:07.800
whatever you have. We don't have these guys yet. Subsequent

40:07.800 --> 40:12.080
example will have it. The number three. This example has it.

40:13.080 --> 40:15.520
So I'm going to erase my ink again.

40:16.520 --> 40:20.200
And this time, now that we have understood what our design is.

40:20.880 --> 40:23.920
I will run this compose stack, bring it up.

40:25.800 --> 40:30.040
What does it mean? It means I will run Docker compose with

40:30.040 --> 40:35.000
this file in hand, which is described in our step number two.

40:36.840 --> 40:40.760
Not described here apparently, so it's not written down, is it?

40:41.320 --> 40:41.760
Let's see.

40:44.280 --> 40:47.600
It's not written down, it seems so I'll write it. Hold on, let

40:47.600 --> 40:49.400
me check. Did I write it?

40:52.280 --> 40:56.040
No, I did not write it, so let me write it down.

40:56.040 --> 41:00.880
The way you would do that is to invoke pretty much like what we

41:00.880 --> 41:03.240
did in in step number one.

41:03.960 --> 41:07.000
Is this command right there? Same thing.

41:07.800 --> 41:11.120
Except this slightly modified to refer.

41:14.800 --> 41:16.960
The other file. This file.

41:21.280 --> 41:25.440
Instead of the file that I am using in the previous example,

41:25.440 --> 41:29.320
I will run Docker compose jwilder.yml. I will not use this

41:29.320 --> 41:31.480
name, but instead use the other name.

41:33.520 --> 41:37.360
That's it. That's the only change you refer to the other

41:37.360 --> 41:39.680
file and it brings up that stack.

41:39.680 --> 41:42.800
So that's the change I just made in my instructions.

41:43.480 --> 41:47.240
And I will now execute that on my command line.

41:48.160 --> 41:49.160
In the iMac.

41:49.160 --> 41:54.000
So here. Like that, Docker compose, bring up the stack

41:54.000 --> 41:59.200
containing WordPress, meaning this file. Bring it up so I did

41:59.200 --> 42:00.400
so it does.

42:02.760 --> 42:04.120
So now we have.

42:05.000 --> 42:06.880
A container running.

42:08.600 --> 42:12.120
Call DB engine, X proxy and app.

42:12.840 --> 42:15.120
So three containers are running right now.

42:15.120 --> 42:18.760
There is some network default, external name is deprecated,

42:18.760 --> 42:20.040
some deprecation warning.

42:20.640 --> 42:25.040
Is assigned apparently, so we will have to deal with the

42:25.040 --> 42:29.160
deprecation later on. I will not talk about deprecations right

42:29.160 --> 42:34.080
now. But it's probably something like this. I think that's what

42:34.080 --> 42:38.600
it basically means, but I think that's what this this line means

42:38.600 --> 42:42.200
external equal true set network name external true. That's what

42:42.200 --> 42:45.720
it means, but I'm not messing around with that thing right

42:45.720 --> 42:47.840
now, so I'm not touching it.

42:49.920 --> 42:54.440
But that said, let us go test. How do you test the same exact

42:54.440 --> 42:58.960
way? Same exact way. In fact, it's a whole lot easier to see

42:58.960 --> 43:03.600
this because we can just open our Firefox browser and go to

43:03.600 --> 43:08.520
http colon slash slash foo dot bar dot com slash 8760 just like

43:08.520 --> 43:16.400
before I will visit this site on my M1 Mac. Remember?

43:17.240 --> 43:21.800
Not this, not this setup, but a separate machine that I have

43:21.800 --> 43:27.000
here or M1 which has the host file modified at C host file is

43:27.000 --> 43:32.000
modified. And I say food dot bar dot com is actually this

43:32.000 --> 43:37.000
machine. So go there. So that's what we expect to see that it

43:37.000 --> 43:40.240
will connect to this reverse proxy through this machine port

43:40.240 --> 43:43.360
to the internal port, which then connects to the WordPress

43:43.360 --> 43:46.160
instance, which then connects to the database, which then

43:46.160 --> 43:48.720
stores the data in the storage, all on this network.

43:49.640 --> 43:50.680
That's what you will see now.

43:51.480 --> 43:52.600
So let us go play with it.

43:55.160 --> 43:58.760
By the way, when you get time, you should do these exercises

43:58.760 --> 44:00.920
yourself and post a screenshot on Twitter.

44:02.920 --> 44:04.360
I'm going to erase this ink.

44:04.360 --> 44:05.480
And then.

44:06.840 --> 44:08.280
Open up that website.

44:09.200 --> 44:11.560
There is another guest coming in. I let him in.

44:14.800 --> 44:16.000
Somebody just showed up.

44:17.160 --> 44:17.880
You're welcome.

44:19.560 --> 44:23.640
So I will now see what that website shows with the browser

44:23.640 --> 44:25.200
shows. So I'm going to open it up.

44:25.200 --> 44:37.120
And. It already shows me something from our previous

44:37.120 --> 44:42.600
attempt. So what I'm going to do now is delete the storage that

44:42.600 --> 44:45.760
storage persisted the whole thing, so that's why you see

44:45.760 --> 44:49.280
the previous attempt that I did. I need to kill the kill the

44:49.280 --> 44:52.840
whole stack and bring it up again. So let me kill it so that

44:52.840 --> 44:56.080
you get a clean experience right now. You're getting a

44:56.080 --> 44:58.920
stale experience from my previous attempt at running this

44:58.920 --> 45:03.160
thing, so I will go back and bring that stack down.

45:04.120 --> 45:07.480
And also delete the storage location. See, I mentioned you

45:07.480 --> 45:10.720
about this storage here, right? This storage here. This one.

45:11.480 --> 45:15.000
That persisted. It did not die. I didn't kill it. Story doesn't

45:15.000 --> 45:18.840
die unless you go deliberately kill it. So I'm going to kill it

45:18.840 --> 45:22.560
now and then run the whole thing again. So here I go identify

45:22.560 --> 45:28.320
what I was using here and so the storage name was Docker Volumes

45:28.360 --> 45:32.640
LS. Lots of volumes here. I want to identify the right one and

45:32.640 --> 45:34.880
kill that one. The right one is.

45:36.080 --> 45:37.920
DB data. Where is that?

45:44.840 --> 45:49.160
There, that's the name. So step by step DB data is the volume

45:49.160 --> 45:54.960
that I want to kill. So Docker volume RM dash F and this guy

45:54.960 --> 46:00.480
should die. So it died nice. So now we don't have that volume

46:00.480 --> 46:04.240
anymore. You can check it by gripping for it.

46:09.440 --> 46:13.080
And we have nothing nice clean setup. So now we'll bring that

46:13.080 --> 46:15.320
stack back up. Again.

46:15.320 --> 46:17.920
This time, as you will see, it created a volume.

46:18.640 --> 46:21.040
That means we're getting a fresh new experience.

46:21.920 --> 46:23.840
And I will refresh the browser.

46:24.560 --> 46:28.040
Like that. And it will show you fresh new installation of

46:28.040 --> 46:31.600
WordPress. That's exactly what we expect, not stale setup. So I

46:31.600 --> 46:35.720
killed the data data store storage volume and now we have

46:35.760 --> 46:40.000
to continue assign a name. So I'll call it the cloud seminar

46:40.000 --> 46:43.600
by cloud genius and all that name password.

46:43.600 --> 46:45.680
And confirm the use of weak password.

46:46.440 --> 46:49.640
You don't want to do that in real situation. Put my name, my

46:49.640 --> 46:53.240
email address. And then discourage search engines and

46:53.240 --> 46:56.360
then install WordPress and you have it up and running. You can

46:56.360 --> 46:58.200
log in. And here you go.

47:01.840 --> 47:04.240
And this is by the way, the latest updated WordPress. You

47:04.240 --> 47:08.120
don't have to any updates any is already finished fresh and you

47:08.120 --> 47:12.040
can now go create a post. Like this, add a post.

47:12.040 --> 47:17.240
And say next, next, next. OK, come on, go away, title.

47:42.040 --> 48:04.800
So that was my edit in this new blog post. I'm going to publish

48:04.800 --> 48:09.520
it and say I am ready. So OK, go do it and then view the post

48:09.520 --> 48:14.040
and there we have it. That's the new post. Now, as you can

48:14.040 --> 48:17.440
see, you know this will persist by the way. If I shut down or

48:17.440 --> 48:20.680
bring the stack down, my data volume will persist and my

48:20.680 --> 48:24.160
everything else will remain intact. Let's go test it. Let's

48:24.160 --> 48:27.000
go actually kill this thing down and bring it down. So docker

48:27.000 --> 48:27.960
volume bring down.

48:29.120 --> 48:34.280
So now. The containers are stopped. The volume.

48:34.280 --> 48:39.120
It's still there. So if I now bring the stack up.

48:40.720 --> 48:43.120
You will see that everything is just fine.

48:44.360 --> 48:47.400
It is working. If I go back and shut it down.

48:51.720 --> 48:55.640
And try to bring it back, nothing works. I go back and

48:55.640 --> 48:57.240
bring it up again.

49:00.240 --> 49:04.240
Everything works. I go back and I go back and I go back and

49:04.240 --> 49:05.480
I go back, shut it down.

49:07.880 --> 49:12.720
And kill the storage you see. That storage volume that one I

49:12.720 --> 49:17.400
want to delete it. So I'll say docker volume go bye bye.

49:19.560 --> 49:23.560
Where is the docker volume? Go bye bye so it dies and we don't

49:23.560 --> 49:27.040
have the docker volume anymore. So now I'll bring the stack up.

49:28.280 --> 49:29.240
And you will see.

49:29.240 --> 49:33.240
That it works like a fresh setup. Actually, it's trying to

49:33.240 --> 49:35.480
establish a connection. But it will soon.

49:39.640 --> 49:43.160
Connect and then it was waiting for database to start up

49:43.160 --> 49:46.960
before it could not establish connection. So now it did and

49:46.960 --> 49:50.280
then we go continue and the same exact thing again. The.

49:50.760 --> 49:53.280
Let's call it cloud genius site.

49:53.280 --> 49:57.400
And user name again, whatever you want. Basically.

50:00.640 --> 50:02.560
This is just junk nothing.

50:04.640 --> 50:08.720
And you have the machine up and running with the sites and

50:08.720 --> 50:11.960
services you wanted and you logged in and then your

50:11.960 --> 50:14.120
dashboard and updates and all are good.

50:15.160 --> 50:16.040
That's the idea.

50:16.960 --> 50:18.720
So we killed our data storage.

50:18.720 --> 50:22.640
And everything was lost. Bring the stack up and you saw the

50:22.640 --> 50:26.120
experimentation. They take away. Let's go summarize it. What did

50:26.120 --> 50:29.680
we do and why did we do it? So here we go.

50:31.760 --> 50:33.080
Summarizing this idea.

50:36.960 --> 50:41.480
The what I'm going to do is get my pencil back. There we go and

50:41.480 --> 50:45.640
I will summarize. The idea is that you can run multiple

50:45.640 --> 50:48.960
services. As many as you want.

51:01.400 --> 51:03.960
And run them all behind a reverse proxy.

51:07.080 --> 51:08.920
And the users can access.

51:09.720 --> 51:12.600
The same IP address with a different IP address.

51:12.600 --> 51:17.280
Access. But the same IP address with a different name like

51:17.280 --> 51:20.600
food.bar.com. So this was food.bar.com.

51:23.960 --> 51:28.600
This was running WordPress and it has a database and it stored

51:28.600 --> 51:32.920
the data in a database system volume provided by Docker called

51:32.920 --> 51:37.240
DB. Underscore data that was the name. I think I chose that's

51:37.240 --> 51:41.160
where the storage was given and all these containers are running

51:41.160 --> 51:44.400
at work. That also gets created through Docker compose.

51:45.000 --> 51:48.200
And you can have this one as say Nilesh.

51:49.280 --> 51:51.200
This one can be Sanjay.

51:53.000 --> 51:54.560
Or basically whatever you want.

51:56.000 --> 51:57.680
And this reverse proxy will.

51:58.560 --> 52:02.080
Reach out to the appropriate container by the name you're

52:02.080 --> 52:05.760
using. And those services will automatically get connected to

52:05.760 --> 52:09.520
whatever on the underlying levels of data set databases or

52:09.520 --> 52:13.680
this or you know Redis proxy or God knows whatever you have

52:13.680 --> 52:17.480
under the hood. You can create whatever you want and run the

52:17.480 --> 52:18.880
entire stack.

52:18.880 --> 52:22.840
In one command, that's the third exercise. By the way, the third

52:22.840 --> 52:26.840
step you will actually see it. Or maybe I'll let let let let

52:26.840 --> 52:29.960
go summarize this first before talk about third. The bottom

52:29.960 --> 52:33.320
line is you can as long as you're preserving the data.

52:33.320 --> 52:38.400
So keep this safe. You can destroy the whole thing.

52:40.840 --> 52:44.720
And bring it up back in one command and everything is back

52:44.720 --> 52:48.360
to normal business. No problem at all, like as if nothing

52:48.360 --> 52:51.200
happened. So that's the whole idea is providing you

52:51.200 --> 52:54.480
resiliency. As long as you're able to protect your data, you

52:54.480 --> 52:57.760
can kill your containers left and right. All of them together

52:57.760 --> 53:01.680
at the same time and bring it back up in a matter of fraction

53:01.680 --> 53:06.120
of seconds. And you're back in business. That's the takeaway is

53:06.120 --> 53:07.720
about persisting data.

53:12.760 --> 53:16.720
Keep it intact, then you keep it separate and then your entire

53:16.720 --> 53:19.880
stack design can be implemented simply just like I showed you.

53:23.880 --> 53:27.200
That's the idea behind using Docker and Docker compose. So

53:27.200 --> 53:30.000
let's go to that Docker compose illustration.

53:30.000 --> 53:31.840
That's the file that we were using.

53:34.560 --> 53:38.400
And simply it had, you know, a bunch of containers like you saw

53:38.400 --> 53:41.840
proxy container database container WordPress container

53:41.840 --> 53:46.400
and what else we had. We had a volume and we had a network.

53:47.120 --> 53:49.360
So storage location network connection.

53:50.840 --> 53:54.120
Three containers up and running whatever you want as long as

53:54.120 --> 53:55.560
you're protecting your volumes.

53:55.560 --> 54:00.240
Volumes. Separately, in an ideal situation, you want to keep

54:00.240 --> 54:04.320
this on a machine away from your main machine like completely

54:04.320 --> 54:09.000
outside. For example, let me show you where exactly you could

54:09.000 --> 54:13.200
put it. You would put it something like let's go take

54:13.200 --> 54:18.320
some example of a cloud. So here we go. Which cloud do we have

54:18.320 --> 54:19.400
here right now logged in?

54:20.200 --> 54:23.800
console.awl.amazon. I think I have Amazon account connected

54:23.800 --> 54:29.080
logged in right now. So what I would like to show you is that

54:29.080 --> 54:32.200
you ask the cloud company like this, for example.

54:33.040 --> 54:33.920
To give you.

54:34.560 --> 54:37.640
An SSD at disk like actual disk.

54:38.960 --> 54:43.880
Or virtual disk who cares, but a disk that you can get from.

54:46.360 --> 54:50.640
And these guys are obnoxiously big and so you get lost. That's

54:50.640 --> 54:54.920
where you go easy to and then you find elastic block storage

54:54.920 --> 54:56.840
somewhere here. Where's that?

54:58.080 --> 54:59.160
Elastic block storage.

55:02.240 --> 55:07.280
Hold on, let me find it for you. The best way to find it is

55:07.280 --> 55:12.680
block storage. And that's how you find it. So block storage is

55:12.680 --> 55:14.600
in here easy to.

55:15.520 --> 55:16.400
Instance.

55:16.400 --> 55:19.080
Volumes, that's the block storage.

55:19.760 --> 55:24.840
So let's go see again in easy to somewhere you have to go look

55:24.840 --> 55:29.520
for a elastic block storage. You create a volume and use a general

55:29.520 --> 55:34.480
purpose SSD and create a size and then you pay for it and then

55:34.480 --> 55:38.760
you use this SSD and connect it to the machine that you will

55:38.760 --> 55:42.360
have so that the disk is separate from the machine. You

55:42.360 --> 55:43.600
can kill the machine.

55:43.600 --> 55:48.080
And then let it die and create a new machine and have it run

55:48.080 --> 55:51.560
Docker and Docker Compose and everything goes brings up as

55:51.560 --> 55:55.720
long as you are. Keeping this volume, basically it's an SSD.

55:56.600 --> 55:59.360
That you know whatever size you want and you will pay for it.

55:59.960 --> 56:03.680
And mount this disk onto a machine you will obtain from

56:03.680 --> 56:07.680
somewhere. And you are in good business, so that's the idea of

56:07.680 --> 56:10.880
separation of storage away from your rest of the actual

56:10.880 --> 56:14.120
functional things. Like you know containers that you run and

56:14.120 --> 56:16.200
some network you have. You can bring this up.

56:16.760 --> 56:20.920
Or kill it all and bring it up again. Just fine. No problems as

56:20.920 --> 56:24.160
long as data is separately stored somewhere else outside of

56:24.160 --> 56:28.320
the machine. That's a machine you will get from from easy to

56:28.320 --> 56:32.000
or some other cloud will have similar setups. All these clouds

56:32.000 --> 56:35.640
are basically the same. You have they have different names that

56:35.640 --> 56:39.000
sound fancy and buzzwords. I call them bullshit bingo.

56:39.000 --> 56:43.680
And yes, people people know that that I don't like buzzwords. I

56:43.680 --> 56:48.240
don't use them. But basically go straight to the bottom line as

56:48.240 --> 56:52.280
to understand what these things are. It's a SSD. This cloud

56:52.280 --> 56:55.840
calls it Wall Elastic Block Storage and Google Cloud calls

56:55.840 --> 57:00.200
it. God knows what, but doesn't even matter. It's an SSD. That's

57:00.200 --> 57:04.760
how you should think. I need a computer, so this cloud calls it

57:04.760 --> 57:06.360
an instance and.

57:06.360 --> 57:10.360
Some of the clouds will call it droplet. Some other some some

57:10.360 --> 57:14.360
other will come with some other fancy name. Who cares? It's a

57:14.360 --> 57:16.360
computer and this is an SSD.

57:17.040 --> 57:21.360
Just keep it simple and don't get what I call you know you

57:21.360 --> 57:24.600
know frustrated by use of buzzwords because in our

57:24.600 --> 57:28.600
industry. These marketing people have great. In fact, the work

57:28.600 --> 57:33.360
the word cloud you know you know the word cloud that itself is a

57:33.360 --> 57:37.160
buzzword. Cloud is nothing but somebody else as computers and

57:37.160 --> 57:41.120
a form of computers. So Bezos Jeff Bezos comes along and gives

57:41.120 --> 57:44.160
you lots of machines and lots of things you know.

57:45.120 --> 57:48.600
That's pretty much what a cloud is. So we'll talk more about

57:48.600 --> 57:51.720
cloud in a separate discussion, but cloud is a marketing

57:51.720 --> 57:55.520
buzzword and the whole thing below that is full of nonsense

57:55.520 --> 57:58.960
buzzwords like absolutely utter useless. Just only thing it does

57:58.960 --> 58:01.000
is confuses everybody.

58:01.000 --> 58:04.600
And makes other people think that you are smart, but you're

58:04.600 --> 58:09.600
not. And if you know the detail, then I can take the you can use

58:09.600 --> 58:13.240
the buzzword. Fine, that's OK, but you need to know that this

58:13.240 --> 58:17.240
is a disk and that's a computer that runs Linux and it runs

58:17.240 --> 58:20.400
containers and I can create whatever I want using a simple

58:20.400 --> 58:21.760
structure like this.

58:22.960 --> 58:26.600
That's what matters. Nothing else does as long as you're able

58:26.600 --> 58:31.200
to get the things to run. Bingo, that's what you want.

58:31.200 --> 58:32.800
So that's the takeaway.

58:33.760 --> 58:37.600
Now the third exercise I can go on and on for like.

58:38.200 --> 58:41.680
Hours and hours I I I don't know when to stop, so let me

58:41.680 --> 58:43.480
just take a look at the timing.

58:43.480 --> 58:47.600
It is one hour, so maybe we can leave something for you to do

58:47.600 --> 58:50.200
it on your own. So here's the step number three.

58:50.200 --> 58:55.480
This three has a Docker Compose YAML file.

58:55.480 --> 59:00.040
With a lot of things, lots of lots of things in here. I'll

59:00.040 --> 59:03.800
just quickly describe it to you and I'll let you run it

59:03.800 --> 59:07.520
yourself. So the description goes like this. See there's a

59:07.520 --> 59:08.880
reverse proxy here.

59:10.280 --> 59:14.720
Reverse proxy. Hold on something went wrong. Why is it drawing

59:14.720 --> 59:19.120
weird things? OK, there we go. So there's a weird. There's a

59:19.120 --> 59:23.400
reverse proxy. There is also a a let's encrypt companion to get

59:23.400 --> 59:24.760
an SSL certificate.

59:27.080 --> 59:31.800
So this needs to run on a on a real cloud setup with a public

59:31.800 --> 59:36.680
IP, not in my in my local IMAT, which doesn't get a public IP.

59:36.680 --> 59:40.640
So 192 address. Which is a local area network address.

59:44.520 --> 59:48.720
And not a public address. This is not going to get me an SSL

59:48.720 --> 59:53.000
certificate. I have the ability to run it in a public IP, but

59:53.000 --> 59:57.120
it will confuse everybody else. I don't want to run it here. This

59:57.120 --> 01:00:00.040
exercise should be run in a actual cloud outside.

01:00:00.040 --> 01:00:04.440
I have a reverse proxy already running in my in my in my setup,

01:00:04.440 --> 01:00:08.600
so I don't want to go there right now. It's too complicated

01:00:08.600 --> 01:00:12.880
for us to even get there unless you understand basics. So you

01:00:12.880 --> 01:00:16.760
need to get this SSL certificate working for which you need to

01:00:16.760 --> 01:00:19.360
run the cloud with a public IP, not the LAN IP.

01:00:20.120 --> 01:00:23.120
And then get it will get you a free certificate.

01:00:24.280 --> 01:00:28.200
From let's encrypt, which is a nonprofit entity.

01:00:28.960 --> 01:00:32.960
That's the thing that will get you a certificate. It will run

01:00:32.960 --> 01:00:36.480
WordPress. It will run another WordPress and probably there are

01:00:36.480 --> 01:00:40.640
more things down and and we'll see all those things. Let me

01:00:40.640 --> 01:00:43.320
erase my ink. It goes away.

01:00:43.320 --> 01:00:46.840
And then I'll scroll so we have one WordPress, another WordPress,

01:00:46.840 --> 01:00:49.680
then database from first WordPress database for second

01:00:49.680 --> 01:00:52.400
WordPress. We're running basically two WordPresses in two

01:00:52.400 --> 01:00:56.600
databases. And each of them is getting a unique name assigned

01:00:56.600 --> 01:01:01.000
here. You see that line number 38 WP dot cloud genius dot app is

01:01:01.000 --> 01:01:05.480
a name that I want to use for this virtual host and then for

01:01:05.480 --> 01:01:07.280
the second one I have this name.

01:01:07.280 --> 01:01:12.800
WP3 dot cloud genius dot app. So you need to have these domain

01:01:12.800 --> 01:01:16.960
names available to you. So if you have a domain name, go

01:01:16.960 --> 01:01:21.080
ahead, do this exercise. If you don't have a domain name, you

01:01:21.080 --> 01:01:23.800
should get one. If you cannot get one for some reason.

01:01:24.600 --> 01:01:27.680
You can still run another exercise which will help you

01:01:27.680 --> 01:01:28.800
understand details and that is.

01:01:30.240 --> 01:01:34.160
That is this exercise called other examples in in here. I

01:01:34.160 --> 01:01:38.320
think I have like way more examples. So there is a Drupal

01:01:38.320 --> 01:01:41.600
container. There's a red mine container. There is a Postgres

01:01:41.600 --> 01:01:44.400
database container. There's a red mine container. Another one.

01:01:44.400 --> 01:01:47.760
There's a database container here and there are more up on

01:01:47.760 --> 01:01:51.280
top. So the whole series of containers. All you can run

01:01:51.280 --> 01:01:52.800
behind one reverse proxy.

01:01:53.680 --> 01:01:57.840
And play with it is an exercise that I will maybe not do right

01:01:57.840 --> 01:02:01.120
now, but I let you experiment with this. So that's an

01:02:01.120 --> 01:02:05.200
exercise you want to be able to own your own. If you don't have

01:02:05.200 --> 01:02:07.040
a domain, we have a domain.

01:02:07.840 --> 01:02:11.760
Run the the the the example I mentioned here number three,

01:02:11.760 --> 01:02:15.360
which is a properly issued SSL certificate website. Is it? It's

01:02:15.360 --> 01:02:19.120
how you can actually run a proper WordPress site by the

01:02:19.120 --> 01:02:23.520
way. For production use. So with that, I think what I would

01:02:23.520 --> 01:02:24.720
like to do is.

01:02:25.960 --> 01:02:30.720
Is switch over to my video feed and ask you questions. You

01:02:30.720 --> 01:02:31.760
are welcome to ask.

01:02:32.400 --> 01:02:35.440
If you have any. And by the way, this is streaming live, so you

01:02:35.440 --> 01:02:37.840
don't have to disclose your names. This is also, you know,

01:02:37.840 --> 01:02:40.640
you don't even have to speak if you don't. I can stop the

01:02:40.640 --> 01:02:43.520
streaming and then you can ask a private one on one question if

01:02:43.520 --> 01:02:46.960
you like. It's up to you. So if you have a question on the live

01:02:46.960 --> 01:02:49.680
feed for everybody else to listen to, you can ask the

01:02:49.680 --> 01:02:53.440
question. If you want to just do on a private meeting in a in a

01:02:53.440 --> 01:02:55.920
teams meeting setup and I'll disable streaming and then you

01:02:55.920 --> 01:02:59.360
can ask a question. It's up to you. You tell me what you want

01:02:59.360 --> 01:03:02.560
to do. I can stop streaming if you like, so you feel

01:03:02.560 --> 01:03:03.520
comfortable. Either way, tell me.

01:03:04.080 --> 01:03:07.120
Otherwise, if you don't say anything, I will stop the stream

01:03:07.120 --> 01:03:10.800
and then let you ask questions in private. So here I go

01:03:10.800 --> 01:03:11.840
stopping my stream.

01:03:12.720 --> 01:03:16.320
And I want to thank you guys listening on the stream. I'll

01:03:16.320 --> 01:03:20.240
see you next time. We run this session every Tuesday 730 PM on

01:03:20.240 --> 01:03:23.440
streaming. If you want to participate, come online on our

01:03:23.440 --> 01:03:27.840
teams meeting. You can join. It is free to join. Go visit this

01:03:27.840 --> 01:03:30.080
website here called. What is it called?

01:03:30.640 --> 01:03:32.600
The cloud seminar with the website.

01:03:34.080 --> 01:03:37.280
Yeah, go visit this website, thecloudseminar.com and here

01:03:37.280 --> 01:03:39.280
you will find upcoming events.

01:03:40.080 --> 01:03:44.560
Right there. Every Tuesday 730 PM, every Wednesday 8 AM India

01:03:44.560 --> 01:03:49.120
time and that's the session you will see list of sessions and

01:03:49.120 --> 01:03:52.960
the people who are participating live right now will decide the

01:03:52.960 --> 01:03:56.800
future sessions and I will update this content and you will

01:03:56.800 --> 01:04:01.280
see a new event pop up and that's where you need to join.

01:04:01.280 --> 01:04:04.480
And once you get once you click through, you register, you get

01:04:04.480 --> 01:04:07.040
an email notification and all that. So that's how you can join

01:04:07.040 --> 01:04:11.040
on my teams meeting with that. I will now stop the stream

01:04:11.040 --> 01:04:14.640
live stream session by disconnecting and saying goodbye

01:04:14.640 --> 01:04:18.400
to the people on various social media channels. The recording

01:04:18.400 --> 01:04:21.360
becomes available on Spotify, by the way, just so you know

01:04:21.360 --> 01:04:25.440
Spotify. Most people think of it as an audio platform. It also

01:04:25.440 --> 01:04:29.760
supports video podcast. So any recordings from our sessions

01:04:29.760 --> 01:04:32.560
goes there. For example.

01:04:34.160 --> 01:04:35.440
Spotify.

01:04:36.960 --> 01:04:42.640
And log in. And there is the podcast. You can see this two

01:04:42.640 --> 01:04:45.360
recordings from the previous and the video pops up.

01:04:46.240 --> 01:04:48.480
This is where you can hide it. This is where you can bring it

01:04:48.480 --> 01:04:51.760
back up. That's the video. If you play something that pops up.

01:04:51.760 --> 01:04:55.280
It's a video capable platform these days. Many people don't

01:04:55.280 --> 01:04:57.280
know about it, so people complain that you know I cannot

01:04:57.280 --> 01:05:01.440
see a video. But yes, you can with that. I'm going to stop

01:05:01.440 --> 01:05:04.800
streaming by streaming guys. Bye bye. See you next time.

01:05:04.800 --> 01:05:06.640
Bye bye. Stopping the stream now.

01:05:11.600 --> 01:05:12.800
OK, the stream is stopped.

01:05:14.640 --> 01:05:16.960
The streaming audience can no longer view the meeting. You're

01:05:16.960 --> 01:05:21.120
welcome to ask questions without having it like showing

01:05:21.120 --> 01:05:21.760
up outside.

01:05:21.760 --> 01:05:23.760
And there you go, hi.

01:05:25.840 --> 01:05:30.000
Can you hear me? I cannot hear you. Yeah, I heard you. I heard

01:05:30.000 --> 01:05:34.720
you go ahead. How are you doing? Yeah, all good. Actually, I

01:05:34.720 --> 01:05:36.240
joined a little bit later.

01:05:37.280 --> 01:05:40.720
Nobody nobody. So that says always a pleasure to hear you

01:05:40.720 --> 01:05:45.280
live. The live sessions are thanks for the live session. OK,

01:05:45.280 --> 01:05:46.560
yeah, you're welcome. So that's.

01:05:46.560 --> 01:05:49.760
Yeah, go ahead, OK. Hi.

01:05:51.280 --> 01:05:53.760
Yes, yes, it was a good session.

01:05:54.560 --> 01:05:57.760
I don't have right now questions because I don't really join.

01:05:59.280 --> 01:06:00.480
So I don't know.

01:06:01.760 --> 01:06:04.480
That means I was super clear and easy to understand.

01:06:06.400 --> 01:06:11.840
And I was I was just asking like another question key like on

01:06:11.840 --> 01:06:13.600
the other side of the screen.

01:06:13.600 --> 01:06:18.800
Key like on the other platform it was available on in video

01:06:18.800 --> 01:06:22.480
format or in audio format. I just checked in the night.

01:06:22.480 --> 01:06:25.280
Spotify is video. Spotify is video. I was just showing you

01:06:25.280 --> 01:06:28.720
that. Let me show you again. Spotify is a video platform. So

01:06:28.720 --> 01:06:32.720
here you go Spotify and you play one of these episodes and

01:06:32.720 --> 01:06:35.680
you play and he starts playing.

01:06:35.680 --> 01:06:44.720
And so I play the video from the last session and here is

01:06:44.720 --> 01:06:46.400
the recording you see.

01:06:53.200 --> 01:06:54.960
Live production and for your custom.

01:06:55.760 --> 01:06:58.480
Right, this is a video site you saw you saw it.

01:06:59.520 --> 01:07:00.720
Like that the other.

01:07:00.720 --> 01:07:05.440
The other is also a video podcast, so Docker Fundamentals.

01:07:06.000 --> 01:07:07.280
I will play it now.

01:07:09.280 --> 01:07:13.760
So these are videos that you can see on.

01:07:15.760 --> 01:07:19.280
On Spotify, if you don't see a video, you know you should tell

01:07:19.280 --> 01:07:20.720
me because something's wrong.

01:07:22.880 --> 01:07:26.800
Yes, it's actually I I checked in the night and I saw it.

01:07:26.800 --> 01:07:29.600
I know, I know there was a problem.

01:07:30.640 --> 01:07:34.160
There was a problem with Spotify, so I contacted them and

01:07:34.160 --> 01:07:37.840
they fixed it. That's why I'm telling you that it is now

01:07:37.840 --> 01:07:40.880
working according to Spotify and according to what I see.

01:07:42.000 --> 01:07:45.120
In fact, I also tweeted about it. Let's go see where that

01:07:45.120 --> 01:07:49.920
tweet is. I tweeted with a picture.

01:07:49.920 --> 01:07:56.000
Of how it is working for me. So here I go. See that the

01:07:56.000 --> 01:07:56.400
picture.

01:07:58.000 --> 01:07:58.800
Yes, see.

01:08:00.640 --> 01:08:02.480
Video shows up in Spotify like that.

01:08:03.520 --> 01:08:04.320
There's a link.

01:08:06.080 --> 01:08:09.600
And there's a vote that people can only hear audio playback,

01:08:09.600 --> 01:08:12.400
so only one person voted like that, so I want I'm I'm

01:08:12.400 --> 01:08:14.400
listening for feedback. I'm listening for feedback.

01:08:14.400 --> 01:08:17.120
I'm listening for feedback. I'm listening for feedback.

01:08:17.120 --> 01:08:20.480
So I want I'm I'm listening for feedback as to what people

01:08:20.480 --> 01:08:22.320
are seeing, but Spotify says.

01:08:23.440 --> 01:08:25.680
It is video. I see it as video.

01:08:26.800 --> 01:08:31.200
If I open Spotify on the phone, let's see what happens.

01:08:31.200 --> 01:08:32.400
I think should be video.

01:08:33.280 --> 01:08:35.520
So Spotify app started.

01:08:37.200 --> 01:08:42.480
Spotify app started as you can see, and then I'll open up my.

01:08:43.680 --> 01:08:44.320
My.

01:08:44.320 --> 01:08:48.000
Video and I'll play it.

01:08:49.520 --> 01:08:52.240
Come on, go away. I call it hello.

01:08:54.080 --> 01:08:56.640
And update post.

01:08:57.680 --> 01:09:00.720
Yeah, it is. It is working. The video is showing on the

01:09:00.720 --> 01:09:01.440
Spotify app.

01:09:02.800 --> 01:09:04.320
So it is working as video.

01:09:05.120 --> 01:09:07.360
I know some people did have trouble last night.

01:09:07.360 --> 01:09:13.760
And they were seeing only audio, which is strange, but.

01:09:13.760 --> 01:09:15.280
But yeah.

01:09:17.280 --> 01:09:20.640
So any other questions anybody else?

01:09:27.440 --> 01:09:31.440
Oh, Prashant says he can see a video. Let's see. Prashant just

01:09:31.440 --> 01:09:32.480
tweeted apparently.

01:09:32.480 --> 01:09:37.680
Akshay says seven tweets.

01:09:37.680 --> 01:09:40.400
Prashant is in India and he says.

01:09:41.360 --> 01:09:44.880
You can see the tweet so you can see the video, yeah.

01:09:51.440 --> 01:09:55.360
Did he tweet or sent me a photo on a DM? Yeah, so he says the

01:09:55.360 --> 01:09:58.400
DM picture and so there is the video DM.

01:09:58.400 --> 01:10:02.240
Hey Prashant, you should tweet public and tell people that you

01:10:02.240 --> 01:10:03.520
are able to see the video.

01:10:06.800 --> 01:10:08.960
DM is awesome, but tweet.

01:10:12.160 --> 01:10:12.800
Beautiful.

01:10:15.600 --> 01:10:16.320
What else?

01:10:18.800 --> 01:10:22.320
Are these sessions useful to you guys? Do you find it any

01:10:22.320 --> 01:10:23.920
use? At all?

01:10:23.920 --> 01:10:30.720
Yes, of course.

01:10:30.720 --> 01:10:30.960
Yes.

01:10:38.160 --> 01:10:39.760
Did Akshay say something funny?

01:10:40.480 --> 01:10:41.840
Yes, sir, go ahead.

01:10:45.680 --> 01:10:50.080
So Nilesh, I thought that the session would talk about Docker

01:10:50.080 --> 01:10:53.840
files. Well, what you showed was more into a Docker Compose.

01:10:53.840 --> 01:10:56.720
Involving Docker images, but it did not.

01:10:56.720 --> 01:10:58.000
It did not talk about anything.

01:10:59.280 --> 01:11:03.120
I know I know I Docker files. Yes, true, you're right. I began

01:11:03.120 --> 01:11:05.440
saying Docker files, but then I saw that I haven't finished

01:11:05.440 --> 01:11:08.160
that portion, so I jumped over to that to finish it and then

01:11:08.160 --> 01:11:11.040
next time we do Docker files and how to create them and all

01:11:11.040 --> 01:11:14.160
that detail. We had to do that and it's there in the exercise,

01:11:14.160 --> 01:11:14.400
but.

01:11:15.360 --> 01:11:18.960
In one hour, you can only fit so much and I don't want to jump

01:11:18.960 --> 01:11:22.160
to a next topic before covering the previous topics, and that's

01:11:22.160 --> 01:11:24.880
the reason why I began thinking about Docker files, but then I

01:11:24.880 --> 01:11:28.640
saw that you know what? Bang, I haven't done it, so I'll do

01:11:28.640 --> 01:11:31.680
it. Will it be discussed next week?

01:11:32.480 --> 01:11:35.440
Yes. Yes, I'll be there.

01:11:36.240 --> 01:11:37.760
Thank you, I'll see you there.

01:11:40.720 --> 01:11:43.280
Yep, otherwise it's a good good session, Nilesh.

01:11:44.320 --> 01:11:48.480
I'm glad you're liking it and glad you can make use of it.

01:11:48.480 --> 01:11:51.120
There's another chat here. What are people saying?

01:11:53.280 --> 01:11:54.000
Chat.

01:11:55.040 --> 01:11:58.720
So that goes without saying, though I need to do a lot of

01:11:58.720 --> 01:12:01.440
work with every Docker. The live sessions are useful,

01:12:01.440 --> 01:12:02.080
nevertheless.

01:12:04.800 --> 01:12:05.520
Suraj.

01:12:07.920 --> 01:12:10.880
It's not as microphone not working apparently, so he's

01:12:10.880 --> 01:12:14.080
typing and chatting, which is fine. No, no, no, no, no, no,

01:12:14.080 --> 01:12:16.160
no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no,

01:12:16.160 --> 01:12:18.560
no, no, no, no, no, no, no sessions are terrible.

01:12:23.680 --> 01:12:26.720
Sessions are terrible.

01:12:26.720 --> 01:12:27.840
I'm kidding.

01:12:29.840 --> 01:12:33.280
I know you. You. You. I think I've never told anybody

01:12:33.280 --> 01:12:36.800
else other than you, but your laughter sounds like Elon Musk.

01:12:38.240 --> 01:12:38.640
Really?

01:12:41.120 --> 01:12:44.480
Well, I don't have. I don't have a South African accent.

01:12:44.480 --> 01:12:52.240
It's tough to do. You don't? Yeah. Although the South African accent does sound a little bit

01:12:52.240 --> 01:13:03.040
British. British? Not Irish? No, not at all. Of course I can speak with an Irish accent. Oh wait, I can't.

01:13:03.040 --> 01:13:17.600
It's nice. This guy's hilarious. Well thank you very much. What's funny is that on St. Patrick's Day I

01:13:17.600 --> 01:13:24.240
actually spoke with an Irish accent. I felt, I felt, you know, I just wanted to, you know, throw

01:13:24.880 --> 01:13:30.880
laughter, well not throw laughter out, but to make the folks laugh so much because we're always,

01:13:30.880 --> 01:13:35.360
you know, you know, busy or we're stressed. I just wanted to make them, you know, feel a bit loose.

01:13:36.080 --> 01:13:42.480
Yes, yes, yes, yes. So by the way, I just want people to know that Namit is a Mridang player

01:13:44.240 --> 01:13:51.520
and he plays, he plays Mridang in our temple here in, in where we live. So he's, he's almost a

01:13:51.520 --> 01:14:03.600
neighbor, almost. He works at Boeing Company and plays nice Mridang and sometimes you will see him

01:14:03.600 --> 01:14:08.960
playing Mridang on live stream from the temple. Yeah, you won't see my face but you can hear me

01:14:08.960 --> 01:14:19.600
play it from time to time, not every day. Cool, cool, cool. So let me go have dinner and I'll let

01:14:19.600 --> 01:14:23.440
you guys enjoy your day and evenings wherever you live.