local development with docker
The Problem: My local development environment and my deployment environment (Docker containers) don’t match and it is leading to unpredictable bugs.
The Unknown: How do I develop my applications inside a Docker container but still maintain a short feedback loop? (i.e. being able to see saved code changes instantly in the container, without having to kill and rebuild the container)
The Solution: Create a base image that mirrors the deployed image. For example, if you have a JavaScript one-page application that is served up in an Nginx container, create a base image with the same Nginx config. If the config file has a root
location in var/web/assets
where the index.html
file usually lives, keep that configuration in place. But leave out the part in the Docker file where you ADD
your code to the var/web/assets
path.
Instead, when you run this development container, simply mount your local working directory in the container as a volume. Docker provides this functionality out of the box.
Assuming your index.html
file is in a local directory called /public
:
This way code can be developed in a tightly-loop environment that more closely mirrors the production environment.