Being an IT contractor, I usually find myself setting up a clients environment to get their project to work locally. As these are setup by individuals, there is a lack of common practice to be able to get setup quickly and end up having to put the hot fixes in place that have been in place for years.
Initially I looked towards Docker as a way to create identical environments between Windows and Mac. Once I understood the core concept of Docker I realised how useful it could be in any project.
Once the Docker configuration for a project is setup, a new user could have a local container setup, ready to go from 2 command lines.
Below is my first attempt at creating a Docker configuration for a simple Angular project.
Layered File System
- Docker is like a cake with multiple layers
- Writable file layer within container can be lost
- A directory associated to the container.
- Know as data volume
- These are persistent
- Alias to folder in docker host
docker-machine ls docker-machine start [machine-name] docker-machine stop [machine-name] docker-machine env [machine-name] docker-machine ip [machine-name] docker-machine status [machine-name]
docker pull [image-name] docker images docker rmi [image-id]
docker run [image-name] docker ps -a docker rm [container-id] docker rm -v [container-id]
|-v||Remove volume associated with container|
docker run -p 8080:3000 -v /var/www/ node docker inspect [container-name] docker run -p 8080:3000 -v $(pwd):/var/www/ node docker run -p 8080:3000 -v $(pwd):/var/www/ node docker run -p 8080:3000 -v $(pwd):/var/www/ -w "/var/www/" node npm start docker run -i -t -p 8080:500 -v $(pwd):/app -w "/app" microsoft/aspnet:1.0.0-rc1-update1-coreclr /bin/bash
|$(pwd)||Current working directory on host|
|-w||Working directory on host|
|/bin/bash||Bash script on VM|