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 docker-compose.yml
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 up
command.