In a development environment, you want two things. You want access to your shiny development tools when coding. And you want the full suite of production services at your disposal to test your code in.
In the Getting Started with Docker guide, we went over how to set up a Docker container. You could put your code inside that container, but remember that I warned containers are ephemeral, meaning you could lose your changes inside the container. Second, you’d have to find a way to use your fancy dev tools on the code inside the container and that’s not simple.
It would be nice if you could develop your code on your dev machine and then automatically have changes reflected inside the container so it’s available for testing.
Well there’s a way.
Docker allows you to “mount” a volume from your host machine’s drive to your container’s drive.
> docker run -d -P -v /Users/myaccount/mywebserver:/var/www/public_html myname/myimage:1.0
- docker run this creates a container from an image
- -d runs it in the background
- -P exposes all ports
- -v to indicate a volume mount
- /Users/myaccount/myewbserver source folder on host to mount
- /var/www/public_html destination folder on container to mount to
- myname/myimage:1.0 name of image to instantiate
If you’re not on a Linux machine, there’s something you should be cautious of.
If you are using Docker Machine on Mac or Windows, your Docker daemon has only limited access to your OS X or Windows filesystem. Docker Machine tries to auto-share your
/Users(OS X) or
Notice in my example above that I’m mounting a folder within my home folder /Users/myaccount.