After searching "docker compose tutorial", i was hesitating, not knowing which tutorial to watch. Then i saw your video and i clicked. I've watched a lot of your toturials and I trust you, so i choose to watch your video with 8k views over that other guy with 850k views. You always explain things well.
@@TechWorldwithNana I am getting an error "Additional properties are not allowed". And in the .yaml file, "services" is having an errr like "Property services is not allowed". Could you please help.
Great tutorial series! Adding "restart: always" to the mongo-express part of the yaml fixed a start-up error for me where mongo-express would exit if mongo wasn't ready for it.
Once again Nana has put together another absolutely brilliant video. I have learned more about Docker from her than any other source. She has a wonderful talent for explaininng concepts clearly and compreshensively. Keep up the good work Nana, what you do a a wonderful gift to developers all over the world. :)
0:07 - What is Docker Compose? 1:22 - docker run commands VS docker compose 5:05 - How to use it? - Create the Docker Compose File (Demo) 7:25 - Docker Networking in Docker Compose 👉🏼 For any questions/issues/feedback, please leave me a comment and I will get back to you as soon as possible. 👉🏼 Also please let me know what you want to learn about Docker & Kubernetes. Also please don't forget to subscribe and give me a thumbs up if you liked my video 🤓
I like how clear, straightforward and easy to understand you make this. It makes me think you have a really good understanding of how this works! Thank you
Whenever I have a complex concept to learn "TechWorld with Nana" is my last resort and you never disappoint me !! This tutorial is yet again a saviour !!
I am so proud that you are Georgian ! Hats off :) Docker topics explained the simplest possible way. What a quality, what an explanation. Wish you all the best👍👍👍
I have watched lots of tutorials about docker,docker-compose and volumes then found out she explained everything way better than those i have watched so far.appreciate it
Hi Nana, You presented really good way. The material and presenting skill is really special to me. I would like to learn how exactly I can make presentation like you. Can you teach me same?
Amazing really u first explained the commands to create images and networks and then u introduce the yaml file it just hit the sweat spot on my brain thanks for this amazing series.
Thanks! sure, you can add your own network name is docker-compose. here is an example: version: '2' services: postgresql: image: postgres:9.6.17 ... networks: - my-network-name postgresql-test: image: postgres:9.6.17 ... networks: - my-network-name networks: my-network-name: When you execute docker-compose up, you can check: 1. docker network ls -> that the network was created 2. docker network inspect my-network-name -> that the containers are running in that network Hope this helps!
Hi Nana, Thanks for the awesome vid. I have a pretty specific question. What is the best standard to follow for the given situation: - I have a dockerfile in one GitHub repo - 2nd dockerfile in another GitHub repo What’s the best practice to follow when I want both of these remote dockerfiles to be included in the same yaml but want to not just spin up both containers thru docker-compose yaml, but also rebuild each remote dockerfile with using the latest code base from each dockerfile’s respective remote repo. Locally, I understand this can be done using: docker-compose up - - build But how can I achieve this to only rebuild each individual image from their respective remote GitHub repo dockerfile based on the REMOTE GitHub repos code base? I know that’s a lot but would really appreciate your input! Keep up these videos btw super helpful 😁 thanks!
1.You can create a GitHub action workflow in any one of the two repos, 2.clone both repos in that action, 3. then you can use docker build action to build two images from your two repos and tag them as latest always,also push them if you have a container registry. 4.Then specify the same images in compose file with version latest. And spin them up to your vm.
How to add "wait" logic in compose? Hi Nana. You mentioned in video about we can add wait logic if there are multiple containers and dependency. Can you please explain it in detail or with an example? Thanking you in advance for such simple way explaining complex things.
Hey Nana after trying to the apply the same fields on docker compose file I got an error, then I fixed the file as below: version: '3' services: mongo: image: mongo ports: - 27017:27017 environment: - ME_CONFIG_MONGODB_ADMINUSERNAME=admin - ME_CONFIG_MONGODB_ADMINPASSWORD=admin mongo-express: image: mongo-express restart: always links: - mongo ports: - 8080:8081 environment: - ME_CONFIG_MONGODB_ADMINUSERNAME=admin - ME_CONFIG_MONGODB_ADMINPASSWORD=admin
Thank you Nana for the wonderful explanation. I watched all the previous videos so it's more clear from commands to docker-compose. I have one query regarding the container name the docker-compose that is creating. In the yaml file, we specified the name as mongodb, and then docker-compose created the container with that name along with some suffix and prefix. Could you please give me more details on how it's generating that prefix and suffix?
Thanks for that nice explanation about docker with examples. However it would be helpful if you can put more details around how to control startup and shutdown order in docker Compose". Thanks in advance.
Can you please update the video to show the use with Docker Compose version 3.1? I got so many errors and finally made it work by finally going through certain documentations and other stuff.
Thank you for this great intro - helps me to immensely wrap my head around something I am picking at work. I was wondering if you could help understand what context means within a compose file? Seems to me like a pointer to another dockerfile? Many thanks
Thank you so much great tutorials series, I have tried to work for myself, but facing an issue with the mongo express. Suppose I have run the express with port 8081 not working a second time with the same port, Any suggestion for the same?
The mongo-express container stops running during the initial run and needs to be manually started. I think mongo-express needs start needs to be delayed to ensure mongodb container is up first.
If you have a couple of services that you are running (not as part of your own built apps) is it good convention to split them up into individual docker compose files or have them all as one? Also, where should docker compose files go?
I absolutely love your tutorials, Nana. I've come into a problem though, where mongo spews out logs in plain text which is very difficult to read. Any idea on how to overcome that? Thanks in advance!
I would like to ask you why do you specify and expose the port on host for mongodb if the docker network already connects them because of internal network? Don't we only need to expose the mongo-express port on host? If I understood it wrong, please correct me. Thanks for an awesome video.
I love your videos so far. I am watching from the begining as a refresher but came to learn the k8s portion. Question for this video is at 10:58 when you start "server.js", I did not catch where / when you created this. Is there a Git repo somewhere that compliments this video? Sorry to ask a distracting question... :)
147 / 5.000 Risultati della traduzione Hello, I did not understand how to set up the volumes for the docker-compose.yml, could you indicate where to study them? thank you very much for your videos.
hey thank you for the tutorial but i have an issue i was working on my docker compose file with go, mysql, phpmyadmin. after docker up commad the phpmyadmin could connect to mysql db.then i used the mysql container name- phpmyqdminb connected but my app would still not connect. what do i need to do? i Used mysql port before and even the phpmyadmin could not connect to the mysql db then
Yes there is a standard way to backup data using "docker volumes". I will be covering "docker volumes" in the next videos, since it's an important concept. Simply explained, it is a physical storage on your host that is used by docker container to persist its data.
@@Techonsapevole yes, exactly. volumes are used for databases and other stateful applications to persist the data. So when you restart the database container the data will still be there. Do you have a specific use case?
@@TechWorldwithNana i mean, all the db containers should be stopped before the backup and then unfreezed to have consistent data.. Is there a docker way to do it in a safe way?
@@Techonsapevole Yes. You can do data backups and restores with docker volumes as well. One way to backup and restore will be to create docker volume backups or tar archive of the volume contents. For this you will need to stop the container. And create a new one that will create this artefact using tar command. Similarly you can restore this docker volume archive in a new container. However if you don't want to start all the containers for a backup, a better way will be to do the automated dumps, specifically for SQL database you will create mysql dump from a running container. Using “docker exec …” command you can execute sqldump and save that dump file on your host. When restoring you can again using “docker exec …” command play the dump into the container. And of course both ways of backup and restore of data can be fully automated.
I have been playing with Docker for past two weeks and I must say I still feel very confused as to the correct development drill. Should I use docker build or docker-compose build or docker-compose --build up, every time I make a change to package.json (modify a script) or Dockerfile itself.
What is "context" in a docker compose? I get an issue with a copy command saying the file isn't there while it is. Lets say in ./schema.sql Context is set to . Cant up compose it says rpc error, file not found. Can you please help?
After searching "docker compose tutorial", i was hesitating, not knowing which tutorial to watch. Then i saw your video and i clicked. I've watched a lot of your toturials and I trust you, so i choose to watch your video with 8k views over that other guy with 850k views. You always explain things well.
That is so great to hear! 😊 Thank you so much for your support!
@@TechWorldwithNana I am getting an error "Additional properties are not allowed". And in the .yaml file, "services" is having an errr like "Property services is not allowed". Could you please help.
Great tutorial series!
Adding "restart: always" to the mongo-express part of the yaml fixed a start-up error for me where mongo-express would exit if mongo wasn't ready for it.
Thanks - I was trying all sorts of things to get this to work!
This is the best tutorial to understand docker very easily. Thank you very much for these videos. 🙏
You're welcome, glad the videos are so helpful :) Would appreciate your support by sharing my videos 🙂💙
Once again Nana has put together another absolutely brilliant video. I have learned more about Docker from her than any other source. She has a wonderful talent for explaininng concepts clearly and compreshensively.
Keep up the good work Nana, what you do a a wonderful gift to developers all over the world. :)
Nana, you make everything so simple.
0:07 - What is Docker Compose?
1:22 - docker run commands VS docker compose
5:05 - How to use it? - Create the Docker Compose File (Demo)
7:25 - Docker Networking in Docker Compose
👉🏼 For any questions/issues/feedback, please leave me a comment and I will get back to you as soon as possible.
👉🏼 Also please let me know what you want to learn about Docker & Kubernetes.
Also please don't forget to subscribe and give me a thumbs up if you liked my video 🤓
Thank you for this! Clear explanation.
your channel as saved me SO much frustration, thank you!
Nana is THE Angel of DevOps. Hats off for your effort !.
I'm in Love 😍
Thank you 😊
I needed to review some conceps and I am glad that I came back to this amazing video. Thanks a lot Nana.
I like how clear, straightforward and easy to understand you make this. It makes me think you have a really good understanding of how this works! Thank you
Nana, you are turning me into a DevOps guru. Thanks you so much for all your brilliant videos.
Excellent explanation. I would rate 5/5 for this video..
This explanation is so much better most of the other ones on UA-cam. Thank you!
this is what I needed, transission from cli commands to config file, many thanks for great tutorial
Whenever I have a complex concept to learn "TechWorld with Nana" is my last resort and you never disappoint me !! This tutorial is yet again a saviour !!
Thanks
Awesome.
I hope this helped. Thank you. 🙂
I am so proud that you are Georgian ! Hats off :) Docker topics explained the simplest possible way. What a quality, what an explanation. Wish you all the best👍👍👍
Very well explained. I learnt Docker with all its tools from you completely. Thank you so much
Thank you, Nana! May God bless you!
Mam trust me u r clearing all the concepts which i was struggling to understand for such a long time..thank u soo much..
You explained docker-compose better than anyone else, you make it crystal clear
I have watched lots of tutorials about docker,docker-compose and volumes then found out she explained everything way better than those i have watched so far.appreciate it
that some great video here, i cant stop watching, very well explained thx
Hi Nana, You presented really good way. The material and presenting skill is really special to me.
I would like to learn how exactly I can make presentation like you. Can you teach me same?
Thanks Milan, do you mean the video editing? I do these with Screenflow :)
very nice can you teach me in a session how to create presentation and video what you doing very nicely
Nana, Would you please upload a tutorial video about Docker Swarm on UA-cam. Thanks.
Thank you vary much for your tutorials! They are very helpful for beginners like me)
Looking forward to the next videos.
The next video will probably be ready on Friday 🤓
Amazing video, as always.
thank you, very useful
quick start guide
Amazing really u first explained the commands to create images and networks and then u introduce the yaml file it just hit the sweat spot on my brain thanks for this amazing series.
Nicely explained 👍👍👍
Thank you for the great tutorial series. Is there any way you can specify container and network name in docker-compose instead of defaults
Thanks! sure, you can add your own network name is docker-compose. here is an example:
version: '2'
services:
postgresql:
image: postgres:9.6.17
...
networks:
- my-network-name
postgresql-test:
image: postgres:9.6.17
...
networks:
- my-network-name
networks:
my-network-name:
When you execute docker-compose up, you can check:
1. docker network ls -> that the network was created
2. docker network inspect my-network-name -> that the containers are running in that network
Hope this helps!
this was a great tutorial, thank you!!!
Very clear explanation. Best series saw on Docker. Keep going!
That's for this. It was concise and easy to follow.
You have great tutorials. Thank you, that is all.
Appreciate the support. Thank you. 🙂
Thanks for sharing
very good video maam...
Thank you HJ! 🙂
Hi Nana,
Thanks for the awesome vid. I have a pretty specific question. What is the best standard to follow for the given situation:
- I have a dockerfile in one GitHub repo
- 2nd dockerfile in another GitHub repo
What’s the best practice to follow when I want both of these remote dockerfiles to be included in the same yaml but want to not just spin up both containers thru docker-compose yaml, but also rebuild each remote dockerfile with using the latest code base from each dockerfile’s respective remote repo.
Locally, I understand this can be done using: docker-compose up - - build
But how can I achieve this to only rebuild each individual image from their respective remote GitHub repo dockerfile based on the REMOTE GitHub repos code base?
I know that’s a lot but would really appreciate your input! Keep up these videos btw super helpful 😁 thanks!
1.You can create a GitHub action workflow in any one of the two repos,
2.clone both repos in that action,
3. then you can use docker build action to build two images from your two repos and tag them as latest always,also push them if you have a container registry.
4.Then specify the same images in compose file with version latest. And spin them up to your vm.
How to add "wait" logic in compose?
Hi Nana. You mentioned in video about we can add wait logic if there are multiple containers and dependency. Can you please explain it in detail or with an example?
Thanking you in advance for such simple way explaining complex things.
use depends-on
Thank you Mam
You're very much welcome Pramod. 🙂
Hey Nana after trying to the apply the same fields on docker compose file I got an error, then I fixed the file as below:
version: '3'
services:
mongo:
image: mongo
ports:
- 27017:27017
environment:
- ME_CONFIG_MONGODB_ADMINUSERNAME=admin
- ME_CONFIG_MONGODB_ADMINPASSWORD=admin
mongo-express:
image: mongo-express
restart: always
links:
- mongo
ports:
- 8080:8081
environment:
- ME_CONFIG_MONGODB_ADMINUSERNAME=admin
- ME_CONFIG_MONGODB_ADMINPASSWORD=admin
Thank you Nana for the wonderful explanation. I watched all the previous videos so it's more clear from commands to docker-compose. I have one query regarding the container name the docker-compose that is creating. In the yaml file, we specified the name as mongodb, and then docker-compose created the container with that name along with some suffix and prefix. Could you please give me more details on how it's generating that prefix and suffix?
Thanks for that nice explanation about docker with examples. However it would be helpful if you can put more details around how to control startup and shutdown order in docker Compose". Thanks in advance.
Thank u so much
Nice one.
Each video is more amazing then the previous one!
Thank you so much 😀
Can you please update the video to show the use with Docker Compose version 3.1? I got so many errors and finally made it work by finally going through certain documentations and other stuff.
Thank you for this great intro - helps me to immensely wrap my head around something I am picking at work. I was wondering if you could help understand what context means within a compose file? Seems to me like a pointer to another dockerfile? Many thanks
Thank you so much great tutorials series, I have tried to work for myself, but facing an issue with the mongo express. Suppose I have run the express with port 8081 not working a second time with the same port, Any suggestion for the same?
Thanks
brilliant
amazing
Keep it up! Great Job!
Thank you 🙂
wow very much helpful thank you!!!
Cool channel like this.....
so I will disable my ad blocker on this channel
You have to show us how you set up the collection for users so that we can follow through everythinggggg
thank you :3
The mongo-express container stops running during the initial run and needs to be manually started. I think mongo-express needs start needs to be delayed to ensure mongodb container is up first.
Thanks Nana!
Nice
Your are just pretty awesome...
If you have a couple of services that you are running (not as part of your own built apps) is it good convention to split them up into individual docker compose files or have them all as one? Also, where should docker compose files go?
It was very helpful
I absolutely love your tutorials, Nana. I've come into a problem though, where mongo spews out logs in plain text which is very difficult to read. Any idea on how to overcome that? Thanks in advance!
Nevermind, just tried a couple of different versions and 4.2 did me good. :)
I would like to ask you why do you specify and expose the port on host for mongodb if the docker network already connects them because of internal network? Don't we only need to expose the mongo-express port on host? If I understood it wrong, please correct me. Thanks for an awesome video.
I love your videos so far. I am watching from the begining as a refresher but came to learn the k8s portion. Question for this video is at 10:58 when you start "server.js", I did not catch where / when you created this. Is there a Git repo somewhere that compliments this video? Sorry to ask a distracting question... :)
gitlab.com/nanuchi/techworld-js-docker-demo-app
thank you for the wonderful series. I have a question. Can you specify in docker-compose the -d option like in docker run -d or is it not possilbe?
ty..
Excellent videos. Will you be also doing something similar for Kubernetes?
Thanks! Yes absolutely, that's the plan.
Looking forward
Great video
Hi Nana, i have a question. Why is it forwarding to port 8081? As you said in the yaml file it it 8080:8080.
@TechWorld with Nana - What is your take on using compose files for setting up k8s?
Good one Nana. 👍
WOW soooooo good!
Thank you... :)
147 / 5.000
Risultati della traduzione
Hello,
I did not understand how to set up the volumes for the docker-compose.yml, could you indicate where to study them?
thank you very much for your videos.
here we don't need to specify the port mapping for mongo, I don't see why we map it, between containers in same network, there is no need ....
Awesome stuff.
Is there a way of naming the internal network, rather than the default app_?
enjyed it sm
hey thank you for the tutorial but i have an issue i was working on my docker compose file with go, mysql, phpmyadmin. after docker up commad the phpmyadmin could connect to mysql db.then i used the mysql container name- phpmyqdminb connected but my app would still not connect. what do i need to do? i Used mysql port before and even the phpmyadmin could not connect to the mysql db then
I have an error in build: mongo is looking for an image in my local directory instead that in docker hub
impressive work
I thoughts lists need to be using "-"? Why aren't there dashes before "mongo" and "mongo express" then?
Great video, thanks.
Do you have a reccomanded way to backup data and db containers?
Yes there is a standard way to backup data using "docker volumes". I will be covering "docker volumes" in the next videos, since it's an important concept.
Simply explained, it is a physical storage on your host that is used by docker container to persist its data.
@@TechWorldwithNana Thanks, what about databases? Is possible to do something for nonstatic data?
@@Techonsapevole yes, exactly. volumes are used for databases and other stateful applications to persist the data. So when you restart the database container the data will still be there.
Do you have a specific use case?
@@TechWorldwithNana i mean, all the db containers should be stopped before the backup and then unfreezed to have consistent data.. Is there a docker way to do it in a safe way?
@@Techonsapevole Yes. You can do data backups and restores with docker volumes as well.
One way to backup and restore will be to create docker volume backups or tar archive of the volume contents. For this you will need to stop the container. And create a new one that will create this artefact using tar command.
Similarly you can restore this docker volume archive in a new container.
However if you don't want to start all the containers for a backup, a better way will be to do the automated dumps, specifically for SQL database you will create mysql dump from a running container.
Using “docker exec …” command you can execute sqldump and save that dump file on your host.
When restoring you can again using “docker exec …” command play the dump into the container.
And of course both ways of backup and restore of data can be fully automated.
I have been playing with Docker for past two weeks and I must say I still feel very confused as to the correct development drill. Should I use docker build or docker-compose build or docker-compose --build up, every time I make a change to package.json (modify a script) or Dockerfile itself.
What is "context" in a docker compose?
I get an issue with a copy command saying the file isn't there while it is. Lets say in ./schema.sql
Context is set to .
Cant up compose it says rpc error, file not found. Can you please help?
please explain networks
How do we run , docker-compose in windows , even i created yaml file , says couldnt find
I could not view the network created so I did docker network ls
Cool
12:24 battery change from 99 to 100
From where did you launched this windows?
from where does it take the name for the network? thanks
I have faced with this problem:
ERROR: In file '.\mongo.yaml', service 'ports' must be a mapping not an array.
what can i do?
I have solved :)
💕
Who else is binge watching Nana's Docker series?
Did you changed your voice?
SORRY!!! I went back one video and found the Gitlab link.. ;)
gitlab.com/nanuchi/techworld-js-docker-demo-app