2016年12月31日星期六

Docker_015:ONBUILD 指令用法说明

环境:MAC OS  X 10.12.2 + Docker 1.12.5

1. 父 Dockerfile 定义
FROM ubuntu:16.04
MAINTAINER James Turnbull "james@example.com"
ENV REFRESHED_AT 2013-07-28
RUN apt-get update
RUN apt-get install -y apache2
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ONBUILD ADD . /var/www/
EXPOSE 80
ENTRYPOINT ["/usr/sbin/apache2"]
CMD ["-D", "FOREGROUND"]

$ docker build -t="jamtur01/apache2" .

2. 子 Dockerfile 定义 
FROM jamtur01/apache2
MAINTAINER James Turnbull "james@example.com"
ENV APPLICATION_NAME webapp
ENV ENVIRONMENT development
 

$ docker build -t="jamtur01/webapp" . 
可以看到,在 FROM 指令之后,Docker 插入了一条 ADD 指令,这条 ADD 指令就是在 ONBUILD 触发器中指定的。
执行完该 ADD 指令后,Docker 才会继续执行构建文件中的后续指令。
这种机制可以将本地源代码添加到镜像。

注意,这种继承关系只能被继承一次,即只能在子镜像中执行,不能在孙子镜像中执行。



没有评论: