1

How do I use heredoc in a Makefile? This Makefile is not functional:

EXECUTABLE=server

build: 
     docker build -t $(EXECUTABLE) - << EOF \
         FROM scratch \
         ADD bin/$(EXECUTABLE) /bin/$(EXECUTABLE) \
         CMD ["/bin/$(EXECUTABLE)"] \
     EOF
imz -- Ivan Zakharyaschev
  • 4,921
  • 6
  • 53
  • 104

1 Answers1

3

It looks like going over a file using heredocs inside a Makefile solves half of the problem:

build: Dockerfile
    docker build -t $(EXECUTABLE) .
    rm Dockerfile

.ONESHELL:
Dockerfile: 
    cat <<- EOF > $@
        FROM scratch
        ADD bin/$(EXECUTABLE) /bin/$(EXECUTABLE)
        CMD ["/bin/$(EXECUTABLE)"]
    EOF

Still, it would be nice to have it all inline.