环境: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 才会继续执行构建文件中的后续指令。
这种机制可以将本地源代码添加到镜像。
注意,这种继承关系只能被继承一次,即只能在子镜像中执行,不能在孙子镜像中执行。
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 才会继续执行构建文件中的后续指令。
这种机制可以将本地源代码添加到镜像。
注意,这种继承关系只能被继承一次,即只能在子镜像中执行,不能在孙子镜像中执行。
没有评论:
发表评论