【发布时间】:2014-11-24 22:22:33
【问题描述】:
我玩 Docker 并制作实用程序,并尝试编写仅在 Dockerfile 更改时重建 docker 映像的规则。
我的项目结构如下:
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 更改时强制 make 执行构建任务?
【问题讨论】:
-
您可能不需要这样做。
docker build在内部管理这种类型的依赖关系更改,以与您尝试使用make实现的效果基本相同。如果您不需要查看状态,可以使用--quiet选项和>/dev/null。