首页 > 编程 > Java > 正文

Docker学习之基于Dockerfile搭建JAVA Tomcat运行环境的方法

2019-11-02 16:59:46
字体:
来源:转载
供稿:网友

前言

在第一篇文字中,我们完全人工方式,一个命令一个命令输入,实现一个java tomcat运行环境,虽然也初见成效,但很累人。如果依靠依靠脚本构建一个Tomcat容器实例,一个命令可以搞定,何乐而不为呢。好在Docker提供了Dockerfile作为构建Docker镜像脚本,避免人们一行一行的输入,真是善莫大焉。Dockerfile脚本可以做到随时维护修改,即可以分享,更有利于在模板化,更不用说传输了,好处那是一大箩筐!

最终目的:打造一个支持SSH终端登录、Tomcat7自动运行的Docker镜像。

编写一个Dockerfile

所有环境,同第一篇文字。在ubuntu下安装好vim之后(吐槽一下,ubuntu系统内置vi命令十分难用,只好求助于vim ):

sudo vim Dockerfile

编辑一个Dockerfile文件了,下面就是具体文件内容:

# VERSION 0.0.1# 默认ubuntu server长期支持版本,当前是12.04FROM ubuntu# 签名啦MAINTAINER yongboy "yongboy@gmail.com"# 更新源,安装ssh serverRUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe"> /etc/apt/sources.listRUN apt-get updateRUN apt-get install -y openssh-serverRUN mkdir -p /var/run/sshd# 设置root ssh远程登录密码为123456RUN echo "root:123456" | chpasswd # 添加orache java7源,一次性安装vim,wget,curl,java7,tomcat7等必备软件RUN apt-get install python-software-propertiesRUN add-apt-repository ppa:webupd8team/javaRUN apt-get updateRUN apt-get install -y vim wget curl oracle-java7-installer tomcat7# 设置JAVA_HOME环境变量RUN update-alternatives --display javaRUN echo "JAVA_HOME=/usr/lib/jvm/java-7-oracle">> /etc/environmentRUN echo "JAVA_HOME=/usr/lib/jvm/java-7-oracle">> /etc/default/tomcat7# 容器需要开放SSH 22端口EXPOSE 22# 容器需要开放Tomcat 8080端口EXPOSE 8080# 设置Tomcat7初始化运行,SSH终端服务器作为后台运行ENTRYPOINT service tomcat7 start && /usr/sbin/sshd -D

需要注意:

ENTRYPOINT,表示镜像在初始化时需要执行的命令,不可被重写覆盖,需谨记 CMD,表示镜像运行默认参数,可被重写覆盖 ENTRYPOINT/CMD都只能在文件中存在一次,并且最后一个生效 多个存在,只有最后一个生效,其它无效! 需要初始化运行多个命令,彼此之间可以使用 && 隔开,但最后一个须要为无限运行的命令,需切记!

ENTRYPOINT/CMD,一般两者可以配合使用,比如:

ENTRYPOINT ["/usr/sbin/sshd"]CMD ["-D"]

在Docker daemon模式下,无论你是使用ENTRYPOINT,还是CMD,最后的命令,一定要是当前进程需要一直运行的,才能够防容器退出。

以下无效方式:

 ENTRYPOINT service tomcat7 start #运行几秒钟之后,容器就会退出 CMD service tomcat7 start #运行几秒钟之后,容器就会退出

这样有效:

ENTRYPOINT service tomcat7 start && tail -f /var/lib/tomcat7/logs/catalina.out# 或者CMD service tomcat7 start && tail -f /var/lib/tomcat7/logs/catalina.out

这样也有效:

 ENTRYPOINT ["/usr/sbin/sshd"] CMD ["-D"]

构建镜像

脚本写好了,需要转换成镜像:

docker build -t yongboy/java7 .

-t: 为构建的镜像制定一个标签,便于记忆/索引等

. : 指定Dockerfile文件在当前目录下

网速不太好,会等待很长时间。很多操作可能需要科学上网,逼得我只能一直挂着VPN,方能畅通无阻。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表