This repository is a playground for practising docker based programming following [docker-development-youtube-series](https://github.com/marcel-dempers/docker-development-youtube-series)
## Three Problems for docker beginner
1. Programmer need be able to navigate through windows/mac/linux OS using cmd line fluently:
1.`ls/dir` for list files
2.`cd` for move through file systems
2. Working Directories
1. Show current working directory `echo $PWD`
2. Don't hardcode path to file in docker files
3. Understand *docker volume*`docker run -v hostPath:containerPath`
1. e.g. `docker run -it -v $PWD:/work -w /work alpine:3.9 /bin/sh`
## dockerfile
Before bring up docker container, we need first create `dockerfile` to describe the image that we want to use to create containers.
For different languages, `c#`, `golang`&`python` each has a separate dockerfile. Each describe the complete environment can be used to develop corresponding programs
## Docker compose
`Compose` is an **orchestration** tool that used to spinning up multi-container distributed applications, it shipped with Docker by default. It's not ideal for large system setup, but great for development purpose and testing
It's easy to define a multi-container app and accompanying services using **one single file**, and start it using single command. We can also build/push images to registry using `docker-compose`