#100DaysOfWeb in Python Transcripts
Chapter: Days 97-100: Docker and Docker Compose
Lecture: Serving external traffic from Docker
0:01 It seemed like we had our web application basically working. Remember we ran the command HTTP for local host inside the container and it worked?
0:10 But alas, this is what we actually got when we tried to interact with our website from the outside of the container.
0:18 That's because we're not serving the port. So let's go and do that. Now, one of the things we have to type here
0:24 is we have to type docker run and then an image name. Well, what is the latest? What we've been doing so far we say docker build ., and we grab this
0:35 little bit here at the end and go, oh right now it's 80. But if we make a change, then that shaw changes again.
0:43 Make a change, it changes, it's always unstable. So it would be better if we could name this. So we can go over here and we can say
0:49 we're going to tag this. Let's just call this front end and latest. All right, again it's super fast but now it's tagged it, so instead of just saying
0:59 well how do I figure out of all of those which one of those is the one I actually want to run? By the way, it's that one.
1:09 But how do you know if you don't have a name? So now we can do this a little bit better. We say docker, run, let's just go back
1:15 to this IT bit for a minute. And we can say front end, latest, batch. There, now we have a name, we have something predictable.
1:28 And we're going to need this later anyway. So we did things like running Nginx but again we're not going to be able to access this from the outside.
1:41 Instead of just passing this here I want to go over here and I want to give it this command Nginx -g "daemon off;".
1:52 First, let's just see if we can get it to run. It's stuck; what is it doing? Let's open up another thing and say docker ps
2:01 and it looks like it's doing this. Well, it would be great if we could access it. Remember, we've already seen you can't access it yet.
2:10 So let's one more time, let's do a docker stop, I guess, generally? So we'll do an F8 for the beginning of the shaw.
2:18 All right, it echoes out the thing that it did stop and now if we do docker, oops, docker ps, all gone. Okay, and this comes back.
2:28 So what we to do is we need to specify the ports to share. We're going to specify where locally, on this machine on my Mac we're going to list them
2:37 and where on the container we're going to map that to. So we're going to go from port 80 outside to port 80 inside.
2:46 Just like before, everything is running but, check this out. Refresh, boom, it's working. Look at that, that is it running over here.
2:55 It's hard to tell but this is actually the thing we want to be happening. All right, we'll go over here, musical and drama
3:03 you see it's definitely, definitely working. How do we know? Because if we go over here and we say docker ps
3:10 to see what's running, then we say docker stop this is, if we try again that was it, that was our thing running. Now, you saw that it actually had
3:23 all the data in the back-end services because at the moment, it's going to the public one not the one that's part of this container deployment.
3:30 So we're going to adjust that a little bit but how about this? We use the -p port, to map an external port, 80, to an internal port.
3:40 We could do that differently if we wanted but the way Nginx works and the way our local server, our local browsers work that was really what we wanted.
3:50 Okay, so this is how we map external ports and this is how we'd run the server as an external command or as the entry point of our docker container.