title
Exploring Docker [2] - Docker Compose With Node & MongoDB
description
In this video we will take a simple Node/Express/Mongo app and dockerize it by adding a Dockerfile and using docker-compose to bundle services together. We will also run our containers on a Digital Ocean droplet.
Sponsor:
DevMountain Bootcamp - https://goo.gl/6q0dEa
Code For This Project:
https://github.com/bradtraversy/docker-node-mongo
$10 off Digital Ocean
https://m.do.co/c/5424d440c63a
Docker Help Gist:
https://gist.github.com/bradtraversy/89fad226dc058a41b596d586022a9bd3
💖 Become a Patron: Show support & get perks!
http://www.patreon.com/traversymedia
Website & Udemy Courses
http://www.traversymedia.com
Follow Traversy Media:
https://www.facebook.com/traversymedia
https://www.twitter.com/traversymedia
https://www.instagram.com/traversymedia
detail
{'title': 'Exploring Docker [2] - Docker Compose With Node & MongoDB', 'heatmap': [{'end': 794.254, 'start': 732.873, 'weight': 0.848}], 'summary': 'Explores practical docker implementation for an existing node.js application with mongodb, emphasizing creating docker files, using docker compose for a jekyll site, setting up docker for node and mongo, and deploying a node app on a digitalocean server, covering crucial information such as port usage and service configuration.', 'chapters': [{'end': 112.306, 'segs': [{'end': 71.273, 'src': 'embed', 'start': 7.059, 'weight': 0, 'content': [{'end': 8.92, 'text': 'this video is sponsored by devmountain.', 'start': 7.059, 'duration': 1.861}, {'end': 12.982, 'text': "if you're interested in learning web development, ios or ux design,", 'start': 8.92, 'duration': 4.062}, {'end': 18.965, 'text': 'devmountain is a 12-week design and development boot camp intended to get you a full-time position in the industry.', 'start': 12.982, 'duration': 5.983}, {'end': 22.567, 'text': 'to learn more, visit devmountain.com or click the link in the description below.', 'start': 18.965, 'duration': 3.602}, {'end': 23.768, 'text': "Hey, what's going on, guys?", 'start': 22.907, 'duration': 0.861}, {'end': 25.989, 'text': 'Welcome to exploring Docker part two.', 'start': 23.808, 'duration': 2.181}, {'end': 32.992, 'text': 'In the first video, we just looked at Docker as a whole, what it is, what containers are, what images are.', 'start': 26.169, 'duration': 6.823}, {'end': 39.276, 'text': 'We looked at a bunch of different commands to run containers in both interactive and detached mode.', 'start': 33.032, 'duration': 6.244}, {'end': 42.078, 'text': 'We looked at Docker Hub and pulling image.', 'start': 40.016, 'duration': 2.062}, {'end': 45.7, 'text': 'We looked at a very simple Docker file using Nginx.', 'start': 42.118, 'duration': 3.582}, {'end': 47.381, 'text': 'So just kind of an introduction.', 'start': 45.78, 'duration': 1.601}, {'end': 50.042, 'text': "Now I want to do something that's a little more practical.", 'start': 47.841, 'duration': 2.201}, {'end': 55.206, 'text': 'I want to take an existing Node.js application that uses MongoDB.', 'start': 50.143, 'duration': 5.063}, {'end': 56.827, 'text': "It's a very simple application.", 'start': 55.246, 'duration': 1.581}, {'end': 60.209, 'text': 'And I want to Dockerize it by creating a Docker file.', 'start': 57.287, 'duration': 2.922}, {'end': 64.831, 'text': 'And also I want to create a Docker compose file,', 'start': 60.909, 'duration': 3.922}, {'end': 71.273, 'text': 'because I want MongoDB to run in a separate container and I want them to be able to basically talk to each other,', 'start': 64.831, 'duration': 6.442}], 'summary': 'Devmountain offers 12-week design and development boot camp to secure full-time positions in the industry. exploring docker for node.js app with mongodb and docker files.', 'duration': 64.214, 'max_score': 7.059, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c7059.jpg'}], 'start': 7.059, 'title': 'Exploring docker part two', 'summary': 'Covers practical docker implementation for an existing node.js application with mongodb, intended for deployment on a digitalocean droplet.', 'chapters': [{'end': 112.306, 'start': 7.059, 'title': 'Exploring docker part two', 'summary': 'Covers practical docker implementation, including creating a docker file and compose file for an existing node.js application with mongodb, intended for deployment on a digitalocean droplet.', 'duration': 105.247, 'highlights': ['The chapter introduces DevMountain, a 12-week design and development boot camp aimed at securing full-time industry positions. DevMountain is mentioned as a sponsor and offers web development, iOS, and UX design courses, with the goal of helping participants secure full-time industry positions.', 'The chapter focuses on creating a Docker file and compose file for an existing Node.js application with MongoDB, preparing it for deployment on a DigitalOcean droplet. The main focus is on Dockerizing an existing Node.js application that uses MongoDB, creating a Docker file and compose file to enable easy containerization and deployment on a DigitalOcean droplet.', 'The chapter emphasizes the practical implementation of Docker by providing a real-world example of containerizing an existing application. The emphasis is on practical implementation, with a demonstration of containerizing an existing Node.js application that uses MongoDB, enabling it to be easily deployed and put anywhere.']}], 'duration': 105.247, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c7059.jpg', 'highlights': ['The chapter focuses on creating a Docker file and compose file for an existing Node.js application with MongoDB, preparing it for deployment on a DigitalOcean droplet.', 'The chapter emphasizes the practical implementation of Docker by providing a real-world example of containerizing an existing application.', 'DevMountain is mentioned as a sponsor and offers web development, iOS, and UX design courses, with the goal of helping participants secure full-time industry positions.']}, {'end': 409.695, 'segs': [{'end': 140.699, 'src': 'embed', 'start': 112.726, 'weight': 4, 'content': [{'end': 117.308, 'text': 'So body parser, so we can parse whatever comes in from our form.', 'start': 112.726, 'duration': 4.582}, {'end': 122.029, 'text': "It's a very simple just form where we can add an item.", 'start': 117.688, 'duration': 4.341}, {'end': 125.351, 'text': 'with a name and then it just lists the items on the page.', 'start': 122.449, 'duration': 2.902}, {'end': 135.357, 'text': "very simple, we're using ejs embedded javascript as our template engine expresses our framework for our routes and then mongoose to talk to mongodb.", 'start': 125.351, 'duration': 10.006}, {'end': 140.699, 'text': "and if we look at our index.js, we're just bringing in our dependencies, setting the view engine.", 'start': 135.357, 'duration': 5.342}], 'summary': 'Using body parser for form input, ejs for template, and mongoose for mongodb communication.', 'duration': 27.973, 'max_score': 112.726, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c112726.jpg'}, {'end': 229.225, 'src': 'embed', 'start': 182.016, 'weight': 5, 'content': [{'end': 185.257, 'text': "when we submit the form, it'll create a new item.", 'start': 182.016, 'duration': 3.241}, {'end': 191.421, 'text': "it'll get the name from the form and then save to mongodb and then redirect And then notice the port is 3000..", 'start': 185.257, 'duration': 6.164}, {'end': 199.764, 'text': "That's very important because in our Docker file, we need to know which port that we're going to be exposing.", 'start': 191.421, 'duration': 8.343}, {'end': 204.006, 'text': "We're also going to need it for the Docker compose file.", 'start': 201.085, 'duration': 2.921}, {'end': 206.266, 'text': 'So very simple application.', 'start': 204.784, 'duration': 1.482}, {'end': 214.995, 'text': 'If we look at our view, this is all it is, is a simple form where we can add an item and then it just loops through the items and shows each one.', 'start': 206.326, 'duration': 8.669}, {'end': 216.457, 'text': 'Very, very simple.', 'start': 215.636, 'duration': 0.821}, {'end': 219.941, 'text': "And I wanted the app to be really simple because it's not about the application.", 'start': 216.497, 'duration': 3.444}, {'end': 220.822, 'text': "It's about Docker.", 'start': 219.981, 'duration': 0.841}, {'end': 224.205, 'text': "So let's go ahead and create a Docker file.", 'start': 221.562, 'duration': 2.643}, {'end': 229.225, 'text': 'Okay, capital D, Docker file, no dot at the beginning or anything like that.', 'start': 225.162, 'duration': 4.063}], 'summary': 'Form submission creates new item, saves to mongodb, and redirects to port 3000.', 'duration': 47.209, 'max_score': 182.016, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c182016.jpg'}, {'end': 318.917, 'src': 'embed', 'start': 288.07, 'weight': 1, 'content': [{'end': 291.834, 'text': 'into our container because we need to install any dependencies.', 'start': 288.07, 'duration': 3.764}, {'end': 301.402, 'text': "If you guys don't know how Node.js works, it looks at the dependencies in this file and then you need to run npm install to actually install them,", 'start': 292.254, 'duration': 9.148}, {'end': 303.885, 'text': 'and then it creates this node modules folder.', 'start': 301.402, 'duration': 2.483}, {'end': 307.128, 'text': 'So we need to move the package.json file.', 'start': 304.465, 'duration': 2.663}, {'end': 318.917, 'text': "So let's say copy and I'm going to say package and we want to copy it to the working directory.", 'start': 307.188, 'duration': 11.729}], 'summary': 'Node.js requires npm install to install dependencies and create node modules folder.', 'duration': 30.847, 'max_score': 288.07, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c288070.jpg'}, {'end': 387.5, 'src': 'embed', 'start': 341.951, 'weight': 0, 'content': [{'end': 343.952, 'text': 'Next, we want to copy everything else over.', 'start': 341.951, 'duration': 2.001}, {'end': 346.154, 'text': "So I'm going to just do copy dot to dot.", 'start': 343.973, 'duration': 2.181}, {'end': 349.616, 'text': 'So copy whatever is here into our container.', 'start': 346.694, 'duration': 2.922}, {'end': 355.14, 'text': "And then we want to expose port 3000 because that's the port that it runs on.", 'start': 350.457, 'duration': 4.683}, {'end': 360.664, 'text': 'And then finally, we need our command, which is in an array form.', 'start': 355.76, 'duration': 4.904}, {'end': 362.185, 'text': 'So we want to do npm.', 'start': 360.944, 'duration': 1.241}, {'end': 370.971, 'text': 'Because if we look at package.json, I have an npm script under start that just runs the app.', 'start': 364.826, 'duration': 6.145}, {'end': 375.114, 'text': 'It calls node and then the name of the main file, which is index.js.', 'start': 371.031, 'duration': 4.083}, {'end': 379.897, 'text': "So npm start will run our app, and that's what this command is going to do right here.", 'start': 375.554, 'duration': 4.343}, {'end': 386.098, 'text': 'So this is a very common and very simple Docker file for a Node.js app.', 'start': 380.39, 'duration': 5.708}, {'end': 387.5, 'text': "So I'm going to save this.", 'start': 386.118, 'duration': 1.382}], 'summary': 'Dockerfile sets up node.js app to run on port 3000 with npm start command.', 'duration': 45.549, 'max_score': 341.951, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c341951.jpg'}], 'start': 112.726, 'title': 'Dockerizing node.js application', 'summary': 'Details the process of creating a docker file for a node.js application, emphasizing the importance of specifying a specific node.js version, moving necessary files and directories into the container, installing dependencies, exposing the application port, and running the application using npm start. it also covers creating a simple application using body parser, ejs template engine, and mongoose to connect to mongodb, with emphasis on setting up a docker file and docker compose file for the application and using port 3000 as crucial information.', 'chapters': [{'end': 229.225, 'start': 112.726, 'title': 'Creating a simple dockerized application', 'summary': 'Covers the creation of a simple application using body parser, ejs template engine, and mongoose to connect to mongodb, with emphasis on setting up a docker file and docker compose file for the application and using port 3000 as crucial information.', 'duration': 116.499, 'highlights': ['Setting up a Docker file and Docker compose file for the application The focus is on creating a Docker file and Docker compose file to set up the application for Dockerization, highlighting the importance of using port 3000 as crucial information.', 'Using body parser, ejs template engine, and mongoose to connect to MongoDB The usage of body parser to parse form data, ejs template engine for rendering views, and mongoose to connect to MongoDB is emphasized in the application development.', "Creating a simple form to add an item and displaying items in the view The application features a simple form for adding items, which are then displayed in the view, emphasizing the simplicity of the app's functionality."]}, {'end': 409.695, 'start': 230.206, 'title': 'Dockerizing node.js application', 'summary': "Details the process of creating a docker file for a node.js application, emphasizing the importance of specifying a specific node.js version and ensuring the application's compatibility, moving necessary files and directories into the container, installing dependencies, exposing the application port, and running the application using npm start.", 'duration': 179.489, 'highlights': ["Creating a Docker file for a Node.js application, emphasizing the importance of specifying a specific Node.js version and ensuring the application's compatibility.", 'Moving necessary files and directories into the container, such as the package.json and package-lock.json files, to install dependencies and create the node_modules folder.', 'Exposing the application port 3000 to allow external communication with the Node.js application.', 'Running the application using the npm start command, which executes the app by calling node and the main file, index.js, as specified in the package.json file.']}], 'duration': 296.969, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c112726.jpg', 'highlights': ["Creating a Docker file for a Node.js application, emphasizing the importance of specifying a specific Node.js version and ensuring the application's compatibility.", 'Moving necessary files and directories into the container, such as the package.json and package-lock.json files, to install dependencies and create the node_modules folder.', 'Exposing the application port 3000 to allow external communication with the Node.js application.', 'Running the application using the npm start command, which executes the app by calling node and the main file, index.js, as specified in the package.json file.', 'Using body parser, ejs template engine, and mongoose to connect to MongoDB The usage of body parser to parse form data, ejs template engine for rendering views, and mongoose to connect to MongoDB is emphasized in the application development.', "Creating a simple form to add an item and displaying items in the view The application features a simple form for adding items, which are then displayed in the view, emphasizing the simplicity of the app's functionality.", 'Setting up a Docker file and Docker compose file for the application The focus is on creating a Docker file and Docker compose file to set up the application for Dockerization, highlighting the importance of using port 3000 as crucial information.']}, {'end': 551.392, 'segs': [{'end': 435.483, 'src': 'embed', 'start': 410.315, 'weight': 0, 'content': [{'end': 417.636, 'text': 'Now in the gist that I have in the description, which is this GitHub gist page here, with all these commands, if you go down to the bottom,', 'start': 410.315, 'duration': 7.321}, {'end': 420.857, 'text': "there's an example of a very simple Docker Compose file.", 'start': 417.636, 'duration': 3.221}, {'end': 423.658, 'text': "And this is from Brett Fisher's course.", 'start': 422.017, 'duration': 1.641}, {'end': 425.879, 'text': 'And this is actually for a Jekyll site.', 'start': 424.098, 'duration': 1.781}, {'end': 430.741, 'text': 'So he has an image on Docker Hub called Brett Fisher slash Jekyll serve.', 'start': 426.339, 'duration': 4.402}, {'end': 435.483, 'text': 'And this is an example of him running the container.', 'start': 431.501, 'duration': 3.982}], 'summary': "The transcript discusses a simple docker compose file for a jekyll site from brett fisher's course.", 'duration': 25.168, 'max_score': 410.315, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c410315.jpg'}, {'end': 528.77, 'src': 'embed', 'start': 499.574, 'weight': 1, 'content': [{'end': 501.335, 'text': 'so we want a Mongo service as well.', 'start': 499.574, 'duration': 1.761}, {'end': 506.32, 'text': "So let's go ahead and close up our Docker file and let's create..", 'start': 502.216, 'duration': 4.104}, {'end': 508.281, 'text': 'Did I put that in the models folder? I did.', 'start': 506.32, 'duration': 1.961}, {'end': 510.103, 'text': "Don't do that, guys.", 'start': 509.162, 'duration': 0.941}, {'end': 512.784, 'text': "Let's move that out to the root.", 'start': 511.304, 'duration': 1.48}, {'end': 513.946, 'text': "That shouldn't be in models.", 'start': 512.825, 'duration': 1.121}, {'end': 520.392, 'text': "So now we're going to create a file called docker-compose.", 'start': 515.168, 'duration': 5.224}, {'end': 523.434, 'text': "And it's a YAML file, so it's going to be .yml.", 'start': 520.692, 'duration': 2.742}, {'end': 527.288, 'text': 'and we want to do the.', 'start': 526.367, 'duration': 0.921}, {'end': 528.77, 'text': "uh, let's see.", 'start': 527.288, 'duration': 1.482}], 'summary': 'Configuring a docker file and creating a docker-compose yaml file for a mongo service', 'duration': 29.196, 'max_score': 499.574, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c499574.jpg'}], 'start': 410.315, 'title': 'Using docker compose for jekyll site', 'summary': 'Discusses the use of docker compose file for a jekyll site, simplifying the process with docker-compose up, configuring ports, volumes, and adding a mongo service. it also covers creating a docker-compose yaml file with version three and defining services.', 'chapters': [{'end': 551.392, 'start': 410.315, 'title': 'Docker compose for jekyll site with example', 'summary': 'Discusses the use of docker compose file for a jekyll site, with an example of running a container and configuring ports and volumes, aiming to simplify the process by using docker-compose up to run the file, and also mentions the addition of a mongo service. the chapter also highlights the creation of a docker-compose yaml file with version three and defining services.', 'duration': 141.077, 'highlights': ['The chapter discusses the use of Docker Compose file for a Jekyll site, with an example of running a container and configuring ports and volumes.', 'Mentions the addition of a Mongo service to the docker-compose file.', 'Highlights the creation of a docker-compose YAML file with version three and defining services.']}], 'duration': 141.077, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c410315.jpg', 'highlights': ['The chapter discusses the use of Docker Compose file for a Jekyll site, with an example of running a container and configuring ports and volumes.', 'Mentions the addition of a Mongo service to the docker-compose file.', 'Highlights the creation of a docker-compose YAML file with version three and defining services.']}, {'end': 1078.032, 'segs': [{'end': 653.215, 'src': 'embed', 'start': 628.951, 'weight': 0, 'content': [{'end': 635.136, 'text': "And then in here, let's define a container name, which I'm going to just call Mongo.", 'start': 628.951, 'duration': 6.185}, {'end': 644.203, 'text': "And we want to define an image, because we're not building from a Docker file for this particular service like we did here.", 'start': 636.337, 'duration': 7.866}, {'end': 647.025, 'text': "We're actually going to pull the image from Docker Hub.", 'start': 644.243, 'duration': 2.782}, {'end': 650.348, 'text': "So we're just going to define Mongo, and that'll pull it from Docker Hub.", 'start': 647.045, 'duration': 3.303}, {'end': 651.875, 'text': "Let's see.", 'start': 651.535, 'duration': 0.34}, {'end': 653.215, 'text': 'Next, we want the ports.', 'start': 651.915, 'duration': 1.3}], 'summary': 'Defining a container named mongo to pull image from docker hub, and specifying the ports.', 'duration': 24.264, 'max_score': 628.951, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c628951.jpg'}, {'end': 794.254, 'src': 'heatmap', 'start': 732.873, 'weight': 0.848, 'content': [{'end': 739.843, 'text': "If there's any debug logs, I'm going to just ignore npm-debug-log.", 'start': 732.873, 'duration': 6.97}, {'end': 743.148, 'text': 'Put those in there and close that up.', 'start': 740.804, 'duration': 2.344}, {'end': 748.697, 'text': 'All right, so we should be ready to start our application in containers.', 'start': 743.735, 'duration': 4.962}, {'end': 755.42, 'text': 'OK, so we should have our main Docker node, Mongo container and our Mongo container, and they should be able to work together.', 'start': 748.717, 'duration': 6.703}, {'end': 759.342, 'text': "And in our index JS, that's why I have Mongo right here.", 'start': 756, 'duration': 3.342}, {'end': 762.503, 'text': 'So this should map to the service name or the container name.', 'start': 759.402, 'duration': 3.101}, {'end': 764.964, 'text': "OK, so let's try this out.", 'start': 763.464, 'duration': 1.5}, {'end': 772.868, 'text': "Let's go to our terminal here and let's run Docker dash compose up.", 'start': 765.044, 'duration': 7.824}, {'end': 780.56, 'text': "So it's going to pull Mongo from Docker Hub because we don't have that image currently.", 'start': 774.918, 'duration': 5.642}, {'end': 782.941, 'text': 'I deleted all my images, all my containers.', 'start': 780.64, 'duration': 2.301}, {'end': 785.742, 'text': "It's going to get node 10, as you can see right here.", 'start': 783.521, 'duration': 2.221}, {'end': 787.083, 'text': "It's going to get that image now.", 'start': 785.802, 'duration': 1.281}, {'end': 794.254, 'text': "Okay, so that's the first thing it's gonna do is just get those images.", 'start': 791.493, 'duration': 2.761}], 'summary': 'Setting up application in containers using docker compose, pulling mongo and node 10 images.', 'duration': 61.381, 'max_score': 732.873, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c732873.jpg'}, {'end': 853.062, 'src': 'embed', 'start': 827.934, 'weight': 1, 'content': [{'end': 835.457, 'text': "so it's creating our containers and then it's doing a bunch of mongodb stuff and then down here it just says mongodb connected,", 'start': 827.934, 'duration': 7.523}, {'end': 839.579, 'text': 'because in our application, once it connects, i just have a console log out.', 'start': 835.457, 'duration': 4.122}, {'end': 840.96, 'text': "so it's now running.", 'start': 839.579, 'duration': 1.381}, {'end': 847.034, 'text': 'now, if we go to localhost, we should see our application because we chose port 80..', 'start': 840.96, 'duration': 6.074}, {'end': 849.698, 'text': 'So there it is, my node app.', 'start': 847.034, 'duration': 2.664}, {'end': 853.062, 'text': 'And if we add an item, we already have some stuff here.', 'start': 849.958, 'duration': 3.104}], 'summary': 'Containers created, mongodb connected, node app running on localhost.', 'duration': 25.128, 'max_score': 827.934, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c827934.jpg'}, {'end': 1007.429, 'src': 'embed', 'start': 972.363, 'weight': 2, 'content': [{'end': 974.223, 'text': 'I already have a git repository, obviously.', 'start': 972.363, 'duration': 1.86}, {'end': 988.718, 'text': "And then we're going to do git commit and let's say um, added docker to app, okay,", 'start': 974.764, 'duration': 13.954}, {'end': 999.004, 'text': "and then i'm going to do a git push And if we reload our repository here now we have all of our Docker stuff.", 'start': 988.718, 'duration': 10.286}, {'end': 1001.425, 'text': 'Awesome All right.', 'start': 999.984, 'duration': 1.441}, {'end': 1004.888, 'text': 'So now I want to get this application on a DigitalOcean droplet.', 'start': 1001.445, 'duration': 3.443}, {'end': 1005.488, 'text': "So let's go.", 'start': 1004.908, 'duration': 0.58}, {'end': 1007.429, 'text': "And by the way, this isn't going to work anymore.", 'start': 1005.588, 'duration': 1.841}], 'summary': 'Added docker to app, pushed to git repository, now deploying on digitalocean droplet.', 'duration': 35.066, 'max_score': 972.363, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c972363.jpg'}], 'start': 551.472, 'title': 'Setting up docker for node and mongo', 'summary': 'Provides a comprehensive guide on setting up docker for node and mongo, covering container names, image building, port mapping, service linking, container deployment to digitalocean, and more.', 'chapters': [{'end': 1078.032, 'start': 551.472, 'title': 'Setting up docker for node and mongo', 'summary': 'Explains how to set up docker for node and mongo, including specifying container names, building images, mapping ports, linking services, running containers, and deploying to digitalocean.', 'duration': 526.56, 'highlights': ['Explaining Docker setup for Node and Mongo The chapter provides a detailed explanation on setting up Docker for Node and Mongo, including specifying container names, building images, mapping ports, and linking services.', 'Running containers and accessing the application It demonstrates running containers and accessing the application on localhost, showcasing the functionality of the setup.', 'Deploying to DigitalOcean droplet It outlines the process of deploying the application to DigitalOcean droplet by pushing the Docker setup to a repository and cloning it on the server.']}], 'duration': 526.56, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c551472.jpg', 'highlights': ['Provides a detailed explanation on setting up Docker for Node and Mongo, including specifying container names, building images, mapping ports, and linking services.', 'Demonstrates running containers and accessing the application on localhost, showcasing the functionality of the setup.', 'Outlines the process of deploying the application to DigitalOcean droplet by pushing the Docker setup to a repository and cloning it on the server.']}, {'end': 1605.724, 'segs': [{'end': 1114.871, 'src': 'embed', 'start': 1079.534, 'weight': 0, 'content': [{'end': 1081.977, 'text': 'And go down here.', 'start': 1079.534, 'duration': 2.443}, {'end': 1083.419, 'text': "I don't care about any of this.", 'start': 1081.997, 'duration': 1.422}, {'end': 1089.507, 'text': "And I'm going to add an SSH key just so I don't have to go into my email and get the password and all that stuff.", 'start': 1084.22, 'duration': 5.287}, {'end': 1094.468, 'text': "I'm not going to really go through how to create SSH keys.", 'start': 1090.367, 'duration': 4.101}, {'end': 1100.669, 'text': 'I have a crash course called SSH Crash Course that you can look up where we actually do this.', 'start': 1094.508, 'duration': 6.161}, {'end': 1102.429, 'text': 'We create SSH keys.', 'start': 1100.729, 'duration': 1.7}, {'end': 1105.53, 'text': 'We add them to DigitalOcean, to GitHub, and so on.', 'start': 1102.469, 'duration': 3.061}, {'end': 1106.59, 'text': 'So you can check that out.', 'start': 1105.57, 'duration': 1.02}, {'end': 1114.871, 'text': "But I'm just going to grab mine by doing a cat command to my home directory dot SSH.", 'start': 1106.93, 'duration': 7.941}], 'summary': 'Demonstrating adding ssh key for convenience, referring to existing ssh crash course.', 'duration': 35.337, 'max_score': 1079.534, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c1079534.jpg'}, {'end': 1217.361, 'src': 'embed', 'start': 1187, 'weight': 2, 'content': [{'end': 1189.321, 'text': "And it doesn't have to be a DigitalOcean server.", 'start': 1187, 'duration': 2.321}, {'end': 1194.122, 'text': 'You could take this app anywhere, on any machine, as long as it has Docker installed,', 'start': 1189.381, 'duration': 4.741}, {'end': 1197.884, 'text': "and simply run Docker Compose up and it'll set it all up in the containers.", 'start': 1194.122, 'duration': 3.762}, {'end': 1203.746, 'text': 'Well, I feel like this used to take quicker.', 'start': 1197.904, 'duration': 5.842}, {'end': 1204.886, 'text': 'There we go.', 'start': 1204.546, 'duration': 0.34}, {'end': 1212.14, 'text': 'OK, so now we have our IP address here.', 'start': 1209.719, 'duration': 2.421}, {'end': 1217.361, 'text': 'So now what I want to do is log into this server.', 'start': 1212.16, 'duration': 5.201}], 'summary': 'Docker compose can set up the app on any machine with docker installed, making deployment easier.', 'duration': 30.361, 'max_score': 1187, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c1187000.jpg'}, {'end': 1309.129, 'src': 'embed', 'start': 1281.688, 'weight': 3, 'content': [{'end': 1284.672, 'text': "So I'm going to just clone that application from GitHub.", 'start': 1281.688, 'duration': 2.984}, {'end': 1287.835, 'text': "So I'm going to go right here, clone.", 'start': 1285.753, 'duration': 2.082}, {'end': 1289.818, 'text': "I'm going to make sure I'm using SSH.", 'start': 1287.875, 'duration': 1.943}, {'end': 1293.062, 'text': "And let's copy this link here.", 'start': 1291.34, 'duration': 1.722}, {'end': 1299.306, 'text': "And don't worry if you guys don't know what's going on here.", 'start': 1296.445, 'duration': 2.861}, {'end': 1300.026, 'text': "Don't worry about it.", 'start': 1299.346, 'duration': 0.68}, {'end': 1304.968, 'text': 'The whole point is to show you that I can take this application and put it anywhere.', 'start': 1300.086, 'duration': 4.882}, {'end': 1308.248, 'text': "run the Docker, compose up and then it's going to set it up for us.", 'start': 1304.968, 'duration': 3.28}, {'end': 1309.129, 'text': 'All right.', 'start': 1308.809, 'duration': 0.32}], 'summary': 'Cloning application from github, setting up with docker, and running with ssh.', 'duration': 27.441, 'max_score': 1281.688, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c1281688.jpg'}, {'end': 1518.468, 'src': 'embed', 'start': 1490.334, 'weight': 1, 'content': [{'end': 1494.897, 'text': 'So our node app is running on our DigitalOcean server in Docker containers.', 'start': 1490.334, 'duration': 4.563}, {'end': 1496.918, 'text': "We'll add some eggs here.", 'start': 1495.818, 'duration': 1.1}, {'end': 1498.239, 'text': 'There we go.', 'start': 1496.938, 'duration': 1.301}, {'end': 1509.825, 'text': 'awesome. so i apologize for the uh little hiccup with the ssh keys, but maybe hopefully it did help someone out that that maybe is confused about that stuff.', 'start': 1499.7, 'duration': 10.125}, {'end': 1514.667, 'text': 'i just generated a key, copied it and put it into github.', 'start': 1509.825, 'duration': 4.842}, {'end': 1518.468, 'text': 'same thing with digital ocean, and again i do have an ssh crash course.', 'start': 1514.667, 'duration': 3.801}], 'summary': 'Node app running on digitalocean server in docker containers, ssh keys added to github and digitalocean.', 'duration': 28.134, 'max_score': 1490.334, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c1490334.jpg'}, {'end': 1594.915, 'src': 'embed', 'start': 1566.623, 'weight': 6, 'content': [{'end': 1569.144, 'text': 'So I want to make this kind of an ongoing thing.', 'start': 1566.623, 'duration': 2.521}, {'end': 1571.244, 'text': 'Not like my next video.', 'start': 1569.164, 'duration': 2.08}, {'end': 1579.007, 'text': "probably won't be a Docker video, but I want to have you know, maybe maybe one a month or something like that, because i want to get more into devops,", 'start': 1571.244, 'duration': 7.763}, {'end': 1581.529, 'text': 'not just on the channel but for myself.', 'start': 1579.007, 'duration': 2.522}, {'end': 1585.971, 'text': 'um, devops is is one thing that is is a little difficult for me.', 'start': 1581.529, 'duration': 4.442}, {'end': 1589.312, 'text': "uh, you know, we all have our areas where it's.", 'start': 1585.971, 'duration': 3.341}, {'end': 1594.915, 'text': "it's kind of difficult for us to grasp, grasp things, and devops is definitely one of those areas for me.", 'start': 1589.312, 'duration': 5.603}], 'summary': 'The speaker plans to create ongoing devops content, aiming for at least one video a month to improve their skills in this area.', 'duration': 28.292, 'max_score': 1566.623, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c1566623.jpg'}], 'start': 1079.534, 'title': 'Setting up ssh key, creating a server, ssh into digitalocean server, and setting up docker', 'summary': 'Covers setting up an ssh key, creating a server using docker, and ssh-ing into a digitalocean server to set up docker. it details the process of resolving ssh key issues, cloning an application from github, and deploying a node app on a digitalocean server.', 'chapters': [{'end': 1217.361, 'start': 1079.534, 'title': 'Setting up ssh key and creating a server', 'summary': "Covers setting up an ssh key to access a server, creating a new server instance using docker, and obtaining the server's ip address, applicable to any machine with docker installed.", 'duration': 137.827, 'highlights': ['The chapter demonstrates setting up an SSH key for accessing a server, eliminating the need to retrieve passwords, and provides a reference to a comprehensive SSH Crash Course for further guidance.', 'It outlines the process of creating a new server instance using Docker, emphasizing the ease of application on machines with Docker installed, and mentions the quick setup time for the server creation process.', "The chapter concludes with obtaining the server's IP address, which is essential for logging into the server and further operations."]}, {'end': 1605.724, 'start': 1217.381, 'title': 'Ssh into digitalocean server and set up docker', 'summary': 'Illustrates the process of ssh-ing into a digitalocean server, setting up docker, encountering ssh key issues, resolving them, cloning an application from github, and running docker compose up, demonstrating the deployment of a node app on a digitalocean server.', 'duration': 388.343, 'highlights': ['The chapter demonstrates SSH-ing into a DigitalOcean server and setting up Docker, showcasing the deployment of a Node app on the server.', 'The speaker encounters SSH key issues while cloning an application from GitHub, resolves them by generating SSH keys, and successfully clones the application.', "The chapter highlights the process of running 'docker-compose up' to set up the application on the DigitalOcean server, displaying the deployment process.", 'The speaker plans to continue creating content on Docker and devops, aiming for regular releases, and acknowledges the challenges of understanding devops.']}], 'duration': 526.19, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/hP77Rua1E0c/pics/hP77Rua1E0c1079534.jpg', 'highlights': ['The chapter demonstrates setting up an SSH key for accessing a server, eliminating the need to retrieve passwords, and provides a reference to a comprehensive SSH Crash Course for further guidance.', 'The chapter demonstrates SSH-ing into a DigitalOcean server and setting up Docker, showcasing the deployment of a Node app on the server.', 'The chapter outlines the process of creating a new server instance using Docker, emphasizing the ease of application on machines with Docker installed, and mentions the quick setup time for the server creation process.', 'The speaker encounters SSH key issues while cloning an application from GitHub, resolves them by generating SSH keys, and successfully clones the application.', "The chapter concludes with obtaining the server's IP address, which is essential for logging into the server and further operations.", "The chapter highlights the process of running 'docker-compose up' to set up the application on the DigitalOcean server, displaying the deployment process.", 'The speaker plans to continue creating content on Docker and devops, aiming for regular releases, and acknowledges the challenges of understanding devops.']}], 'highlights': ['The chapter focuses on creating a Docker file and compose file for an existing Node.js application with MongoDB, preparing it for deployment on a DigitalOcean droplet.', 'Provides a detailed explanation on setting up Docker for Node and Mongo, including specifying container names, building images, mapping ports, and linking services.', 'The chapter demonstrates setting up an SSH key for accessing a server, eliminating the need to retrieve passwords, and provides a reference to a comprehensive SSH Crash Course for further guidance.', 'The chapter outlines the process of deploying the application to DigitalOcean droplet by pushing the Docker setup to a repository and cloning it on the server.', 'The chapter discusses the use of Docker Compose file for a Jekyll site, with an example of running a container and configuring ports and volumes.']}