Docker-In-Action-<四> 运行tomcat 加载war包 mysql 方式运行容器

再整理一篇学习docker的笔记,使用ubuntu来作base image,然后用—volumes-from 将war包挂在到tomcat容器运行.
需要两个容器:
1 获取URL中指定的war文件并存储到volume
2 一个运行tomcat服务并加载war包得容器

war容器

1
2
3
4
$cd docker
$mkdir war
$cd war
$touch Dockerfile

Dockerfile 文件

1
2
3
4
5
6
7
8
9
FROM ubuntu:14.04
MAINTAINER hzchenkj <hzchenkj@gmail.com>
ENV REFRESHED_AT 2014-11-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 [ "-?" ]

在ubuntu镜像基础上,安装wget软件,使用/var/lib/tomcat7/webapps/ 挂在volume并指定为工作目录,便于后面wget命令下载war包。
使用ENTRYPOINT和CMD命令组合方式,提供了默认不带参数运行docker run,会提示怎么使用wget命令,使用指定url参数运行wget下载。
构建镜像并运行:

1
2
docker build -t hzchenkj/war .
docker run -t -i --name sample hzchenkj/war https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war

下载sample war包,放到/var/lib/tomcat7/webapps/,在host主机路径/var/lib/docker/vfs/dir/能查到对于的war包:

tomcat容器

1
2
3
$ mkdir tomcat7
$ cd tomcat7
$ touch Dockerfile

Dockerfile文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
FROM ubuntu:14.04
MAINTAINER hzchenkj <hzchenkj@163.com>
ENV REFRESHED_AT 2014-11-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" ]

安装jdk和tomcat,设置启动需要的环境变量,端口,最后一个启动命令,运行tomcat到前台。

1
docker build -t hzchenkj/tomcat7 .

运行应用程序

1
2
3
docker run --name sample_app --volumes-from sample -d -P hzchenkj/tomcat7
docker port sample_app 8080
curl http://localhost:<port>

还可以通过link方式将数据库容器关联,来持久化数据到数据库容器

mysql 容器和数据容器

启动一个Volume_Data容器,将主机的/opt/data映射到容器的/data目录

1
docker run -v /opt/data/:/data/ --name Volume_Data ubuntu:14.04

启动mysql容器,使用前面创建的数据容器

1
docker run -d -P -h mysqlhost --volumes-from Volume_Data --name mysql hzchenkj/mysql

启动tomcat容器,关联mysql容器,程序需要修改mysql数据库连接

1
docker run -d -h tomcat7host --name tomcat7 --link mysql:db hzchenkj/tomcat7

会在tomcat容器的hosts文件中增加 “172.14.. db” 和相应的环境变量,来关联mysql容器

1
docker run -rm --volumes-from Volume_Data -v $(pwd):/backup busybox tar cvf /backup/backup.tar /data

备份mysql的数据容器

评论