环境:MAC OS X 10.12.1 + Docker 1.12.3
该应用包括两个镜像:
(1)一个镜像从 URL 拉取指定的 war 文件,并将其保存到卷里。
(2)一个镜像安装了 Tomcat,运行这些 war 文件。
1. 构建 fetcher 镜像
$ cd /Users/maping/mygit/dockerbook-code/code/6/tomcat
$ cd fetcher
$ cat Dockerfile
FROM ubuntu:16.04
MAINTAINER James Turnbull
ENV REFRESHED_AT 2016-06-01
RUN apt-get -yqq update
RUN apt-get -yqq install wget
VOLUME [ "/var/lib/tomcat7/webapps/" ]
WORKDIR /var/lib/tomcat7/webapps/
ENTRYPOINT [ "wget" ]
CMD [ "--help" ]
$ docker build -t jamtur01/fetcher .
$ docker images
2. 获取 war 文件
$ docker run -it --name sample jamtur01/fetcher https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war
因为设置了容器的工作目录,sample.war 最终会保存到 /var/lib/tomcat7/webapps/ 目录中。
由于长城墙原因,导致无法获取 https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war。
因此,提前下好 https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war,并拷贝到 fetcher 目录下。
修改 Dockerfile 如下:
FROM ubuntu:16.04
MAINTAINER James Turnbull
ENV REFRESHED_AT 2016-06-01
RUN apt-get -yqq update
RUN apt-get -yqq install wget
VOLUME [ "/var/lib/tomcat7/webapps/" ]
WORKDIR /var/lib/tomcat7/webapps/
COPY sample.war /var/lib/tomcat7/webapps/
ENTRYPOINT [ "wget" ]
CMD [ "--help" ]
运行命令改为 $ docker run -it --name sample jamtur01/fetcher
查看某个卷的具体位置
$ docker inspect -f "{{ .Config.Volumes }}" sample
map[/var/lib/tomcat7/webapps/:{}]
$ ls -l /var/lib/docker/vfs/dir // 我是 MAC,没有此目录
3. 构建 tomcat7 镜像
$ /Users/maping/mygit/dockerbook-code/code/6/tomcat
$ cd tomcat7
$ cat Dockerfile
FROM ubuntu:16.04
MAINTAINER James Turnbull
ENV REFRESHED_AT 2016-06-01
RUN apt-get -yqq update
RUN apt-get -yqq install tomcat7 default-jdk
ENV CATALINA_HOME /usr/share/tomcat7
ENV CATALINA_BASE /var/lib/tomcat7
ENV CATALINA_PID /var/run/tomcat7.pid
ENV CATALINA_SH /usr/share/tomcat7/bin/catalina.sh
ENV CATALINA_TMPDIR /tmp/tomcat7-tomcat7-tmp
RUN mkdir -p $CATALINA_TMPDIR
VOLUME [ "/var/lib/tomcat7/webapps/" ]
EXPOSE 8080
ENTRYPOINT [ "/usr/share/tomcat7/bin/catalina.sh", "run" ]
$ docker build -t jamtur01/tomcat7 .
$ docker images
4. 运行 war 文件
$ docker run --name sample_app --volumes-from sample -d -P jamtur01/tomcat7
说明:-P (大写的P)表示发布容器所有暴露的端口给宿主机
$ docker port sample_app 8080
0.0.0.0:32769
访问 http://localhost:32769/sample
该应用包括两个镜像:
(1)一个镜像从 URL 拉取指定的 war 文件,并将其保存到卷里。
(2)一个镜像安装了 Tomcat,运行这些 war 文件。
1. 构建 fetcher 镜像
$ cd /Users/maping/mygit/dockerbook-code/code/6/tomcat
$ cd fetcher
$ cat Dockerfile
FROM ubuntu:16.04
MAINTAINER James Turnbull
ENV REFRESHED_AT 2016-06-01
RUN apt-get -yqq update
RUN apt-get -yqq install wget
VOLUME [ "/var/lib/tomcat7/webapps/" ]
WORKDIR /var/lib/tomcat7/webapps/
ENTRYPOINT [ "wget" ]
CMD [ "--help" ]
$ docker build -t jamtur01/fetcher .
$ docker images
2. 获取 war 文件
$ docker run -it --name sample jamtur01/fetcher https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war
因为设置了容器的工作目录,sample.war 最终会保存到 /var/lib/tomcat7/webapps/ 目录中。
由于长城墙原因,导致无法获取 https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war。
因此,提前下好 https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war,并拷贝到 fetcher 目录下。
修改 Dockerfile 如下:
FROM ubuntu:16.04
MAINTAINER James Turnbull
ENV REFRESHED_AT 2016-06-01
RUN apt-get -yqq update
RUN apt-get -yqq install wget
VOLUME [ "/var/lib/tomcat7/webapps/" ]
WORKDIR /var/lib/tomcat7/webapps/
COPY sample.war /var/lib/tomcat7/webapps/
ENTRYPOINT [ "wget" ]
CMD [ "--help" ]
运行命令改为 $ docker run -it --name sample jamtur01/fetcher
查看某个卷的具体位置
$ docker inspect -f "{{ .Config.Volumes }}" sample
map[/var/lib/tomcat7/webapps/:{}]
$ ls -l /var/lib/docker/vfs/dir // 我是 MAC,没有此目录
3. 构建 tomcat7 镜像
$ /Users/maping/mygit/dockerbook-code/code/6/tomcat
$ cd tomcat7
$ cat Dockerfile
FROM ubuntu:16.04
MAINTAINER James Turnbull
ENV REFRESHED_AT 2016-06-01
RUN apt-get -yqq update
RUN apt-get -yqq install tomcat7 default-jdk
ENV CATALINA_HOME /usr/share/tomcat7
ENV CATALINA_BASE /var/lib/tomcat7
ENV CATALINA_PID /var/run/tomcat7.pid
ENV CATALINA_SH /usr/share/tomcat7/bin/catalina.sh
ENV CATALINA_TMPDIR /tmp/tomcat7-tomcat7-tmp
RUN mkdir -p $CATALINA_TMPDIR
VOLUME [ "/var/lib/tomcat7/webapps/" ]
EXPOSE 8080
ENTRYPOINT [ "/usr/share/tomcat7/bin/catalina.sh", "run" ]
$ docker build -t jamtur01/tomcat7 .
$ docker images
4. 运行 war 文件
$ docker run --name sample_app --volumes-from sample -d -P jamtur01/tomcat7
说明:-P (大写的P)表示发布容器所有暴露的端口给宿主机
$ docker port sample_app 8080
0.0.0.0:32769
访问 http://localhost:32769/sample
没有评论:
发表评论