我在Docker上玩並製作實用程序,並嘗試編寫僅在Dockerfile更改時重新創建Docker鏡像的規則。
我的項目結構如下:Docker with make:在Dockerfile上生成鏡像更改
tree .
.
├── Dockerfile
├── Makefile
└── project
└── 1.js
我Dockerfile很簡單:
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"]
它只是創建了安裝的NodeJS簡單Ubuntu的鏡像,並運行從共享目錄的腳本。
現在我想從Makefile運行這個圖像。當我更改Dockerfile時,我想重建圖像。 Makefile的樣子:
default: run
run: build
docker run -v $(CURDIR)/project:/project app-server
build: Dockerfile
docker build -t app-server .
現在,當我執行命令sudo make
它重建的圖像每次。
我只能在Dockerfile發生變化時才強制執行構建任務?
發佈了一些指導你真的應該看看https://docs.docker.com/articles/dockerfile_best-practices/ – 2015-07-14 18:58:08
你可能不需要這麼做。 'docker build'在內部管理這種類型的依賴關係更改,基本上與您嘗試使用'make'實現的效果基本相同。如果您不需要查看狀態,可以使用'--quiet'選項以及'>/dev/null'。 – nobar 2016-06-15 04:48:29