I’m a big fan of makeshift Makefile
s. Largely because I don’t seem to have the brain capacity to remember long winded commands. Or maybe, I just don’t like typing out long winded commands. One of the two reasons, for sure.
In using a Makefile
to set up a local DNS server to help resolve an issue with multiple different related, but separated Docker projects being able to talk to one another, I ended up coming across this Stack Overflow post which was very helpful.
The solution from the post calls for running a Docker command to spin up a local DNS server, which then allows all the disparate services to talk to one another via hostname
, rather than IP address.
I dutifully created a new Makefile
entry:
start_dev_dns:
@docker run \
--rm \
--hostname=dns.mageddo \
-p 5380:5380 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /etc/resolv.conf:/etc/resolv.conf \
defreitas/dns-proxy-server
It’s hard to spot the fault here. That command looks right to me.
I copy / pasted the command direct from the Stack Overflow post, added in the --rm
flag to ensure the resulting container gets removed when I kill it, and then tried to run the command:
➜ myproject.whatever make start_dev_dns docker: invalid reference format. See 'docker run --help'. make: *** [Makefile:8: start_dev_dns] Error 125
Boo.
Anyway, after a bit of head scratching, it turns out the issue was an extra space after the line continuation slash.
Really hard to display this one on a blog post. But essentially if you see this and you’re in a similar situation, check you don’t have any rogue spaces after the \
‘s at the end of each line.