I'm having a tough time with debugging in Docker. Every time I tweak something in my Dockerfile or docker-compose.yaml, it takes about 1-2 minutes to rebuild the container just to check if my changes worked. It's so frustrating! During that wait, I usually get distracted and end up taking about a 5-minute break between tweaks. Is this really how Docker works, or am I going about it all wrong?
3 Answers
I totally relate! I have two servers too. One is older with HDDs and a slow CPU/RAM, and rebuilding containers there is a real pain, especially for multi-staged Vue frontends. The other server is faster with SSDs, but it still takes about a minute. One trick that helped me was using Docker watch. It automatically rebuilds and restarts the containers when you change source files, so I can keep working on my code and save it while Docker takes care of itself.
Another good tip is to mount the directory where your code or binaries live in the container using your compose file. That way, when you relaunch the container, your changes are there immediately. Just remember to handle copying that directory properly when you deploy or distribute your app.
You might want to look into how Docker uses layers and caching. If you separate the parts that aren't working into their own layer, the build process could reuse the cache for everything else, making the rebuilds much quicker. Once you get your app working, you can optimize your layers again.
Also, consider debugging directly on the running container. You can exec into it and make your fixes there before rebuilding your Dockerfile. It’s really about getting a better grasp of how Docker works, rather than it being broken or anything.