Gram z Dockerem i tworzę narzędzie i próbuję napisać regułę, która odbudowuje obraz doka tylko w przypadku zmiany pliku Docker.
Moja struktura projektu wygląda następująco:Doker z make: buduj obraz na Dockerfile change
tree .
.
├── Dockerfile
├── Makefile
└── project
└── 1.js
My Dockerfile jest dość prosta:
FROM ubuntu
RUN apt-get update
RUN apt-get install -y curl
RUN curl -sL https://deb.nodesource.com/setup | sudo bash -
RUN apt-get update
RUN apt-get install -y build-essential nodejs
VOLUME ["/project"]
ENTRYPOINT ["cat"]
CMD ["project/1.js"]
To właśnie tworzy prostą ubuntu obraz z instalacją nodejs i uruchomić skrypt z katalogu udostępnionego.
Teraz chcę uruchomić ten obraz z pliku Makefile. Kiedy zmieniam plik Dockerfile, chcę go odbudować. Makefile wygląda następująco:
default: run
run: build
docker run -v $(CURDIR)/project:/project app-server
build: Dockerfile
docker build -t app-server .
Teraz kiedy wykonać polecenie sudo make
to odbudować obraz za każdym razem.
Jak zmusić make do wykonania zadania kompilacji tylko po zmianie pliku Dockerfile?
Należy naprawdę spojrzeć na https://docs.docker.com/articles/dockerfile_best-practices/ –
Prawdopodobnie nie trzeba tego robić. 'docker build' wewnętrznie zarządza tego typu zmianą zależności, aby uzyskać w zasadzie ten sam efekt, który próbujesz osiągnąć za pomocą' make'. Jeśli nie potrzebujesz widzieć statusu, możesz użyć opcji '--quiet' razem z'>/dev/null'. – nobar