I use a two step process for deploying changes to one of my apps, first
docker-compose build app to build the latest image and then
docker-compose up --no-deps -d app to replace the current version.
Recently the first step in this process started hanging at the line
RUN npm install. After much research, this appears to be a DNS issue. I tried all the suggested fixes, restarting docker and the machine itself but nothing helped. I could ping the registry.npmjs.org from the machine itself, just not from docker. Finally, what worked was running docker in host mode (using the dns of the machine) during build.
Check out the releases page if you need to upgrade.
Make a change to the build section of your
build: network: host context: .
Now you can run
docker-compose build app using the host network.
In my case, the image now built fine but running
docker-compose up --no-deps -d app resulted in an error that the host network doesn’t work with links. The solution here is to remove the “network: host” line, run the build step again (it will use the cache so npm install will work) and then run the