上一篇文章的基本做法是通过centOS的官方镜像启动一个容器,然后进入到容器中,手动敲命令安装JDK跟tomcat,这个跟在linux下搭建没有什么区别,只是用来熟悉docker命令,并且在日常开发中如过没有完全符合自己需求的image时(例如RabbitMQ设置用户名和密码),我们可以pull一个现成的,在这个基础上进行修改,效率可能会更高一点,在大部分情况下我们都会选择使用Dockerfile来构建自己的image。

  1、准备相关的软件包和镜像

  docker pull centos 拉取镜像,创建/opt/software包,在包内放入jdk和tomcat的压缩包

  2、编辑Dockerfile,特别需要注意的是jdk、tomcat的压缩包在镜像中解压后的包名,在设置环境变量时不要写错了,我的内容如下

#基础镜像
FROM centos
#维护人员信息
MAINTAINER asd #设置工作目录,这个命令是用来切换工作目录的,相当于cd命令
WORKDIR /usr #将宿主机中的jdk压缩包复制到镜像中,使用相对路径,我的Dockerfile和jdk、tomcat的压缩包在一个目录下,而二个参数是镜像中保存的路径
COPY jdk-8u152-linux-x64.tar.gz /usr
COPY apache-tomcat-8.0..tar.gz /usr #RUN用来执行linux命令,解压jdk和tomcat,在解压后可以将镜像中的压缩包删了,以降低最终创建镜像的大小
RUN tar -zvxf /usr/jdk-8u152-linux-x64.tar.gz -C /opt && rm -rf /usr/jdk-8u152-linux-x64.tar.gz
RUN tar -zvxf /usr/apache-tomcat-8.0..tar.gz -C /opt && rm -rf /usr/apache-tomcat-8.0..tar.gz #设置环境变量
ENV JAVA_HOME /opt/jdk1..0_152
ENV PATH $PATH:/$JAVA_HOME/bin #暴露tomcat的内部接口
EXPOSE
#启动容器时,执行脚本文件启动Tomcat并持续输出日志,防止容器退出
ENTRYPOINT /opt/apache-tomcat-8.0./bin/startup.sh && tail -f /opt/apache-tomcat-8.0./logs/catalina.out

  3、创建镜像

  在/opt/software目录下执行创建命令 docker build -t mycat:1.0 .,macat是镜像的名字,命令最后面有一个"点",代表当前路径,不要忘了。创建完成后输入docker images,可以看到自己创建的镜像。

  4、运行镜像,创建一个tomcat server

  docker -it --name mycat001 -p 8088:8080 mycat:1.0 /bin/bash

  启动完成后,在浏览器中访问宿主机的ip+端口,就可以访问通了,如果出现类似于“driver failed programming external connectivity on endpoint goofy_bose”的错误,可以试一下关闭防火墙并重启docker,若出现“/opt/jdk-8u152/bin/java: No such file or directory ”类似的错误,则是环境变量的路径配置的不正确。

  

Docker搭建tomcat运行环境(Dockerfile方式)的更多相关文章

  1. 使用Docker搭建Tomcat运行环境

    1 准备宿主系统 准备一个 CentOS 7操作系统,具体要求如下: 必须是 64 位操作系统 建议内核在 3.8 以上 通过以下命令查看您的 CentOS 内核: # uname -r 2 安装Do ...

  2. Docker搭建tomcat运行环境(修改镜像方式)

    对于java程序员来说,要想使用Docker来部署你的应用,那么在镜像中安装类似于tomcat的容器基本上是必须的(sprintboot项目除外),本篇介绍自己基于对centos镜像的修改,创建自己的 ...

  3. 使用 Docker 搭建 Tomcat 运行环境

    转自: http://m.oschina.net/blog/616526, 版权归原作者所有. 1 Docker与虚拟机     2 搭建过程 2.1 准备宿主系统 准备一个 CentOS 7操作系统 ...

  4. Docker学习笔记之二,基于Dockerfile搭建JAVA Tomcat运行环境

    前言 在第一篇文字中,我们完全人工方式,一个命令一个命令输入,实现一个 java tomcat运行环境,虽然也初见成效,但很累人.如果依靠依靠脚本构建一个Tomcat容器实例,一个命令可以搞定,何乐而 ...

  5. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...

  6. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境(转)

    前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装.部署和升级,非常 ...

  7. [转]Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    本文转自:http://www.blogjava.net/yongboy/archive/2013/12/12/407498.html 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 ...

  8. 基于Dockerfile搭建JAVA Tomcat运行环境

    前言 在第一篇文字中,我们完全人工方式,一个命令一个命令输入,实现一个java tomcat运行环境,虽然也初见成效,但很累人.如果依靠依靠脚本构建一个Tomcat容器实例,一个命令可以搞定,何乐而不 ...

  9. Centos7安装Docker 基于Dockerfile 搭建httpd运行环境

    Centos7安装Docker 基于Dockerfile 搭建httpd运行环境 docker docker搭建 docker build 本文档完成目标内容如下 使用Docker搭建http服务器一 ...

随机推荐

  1. TextView 垂直居中

     需要区分的是这里的top,bottom,ascent,descent,baseline是指字内容的属性,通过getPaint().getFontMetricsInt()来获取得到.和字体内容的外部容 ...

  2. C# 加密(Encrypt) 解密(Decrypt) 操作类 java与 C# 可以相互加密解密

    public sealed class EncryptUtils { #region Base64加密解密 /// <summary> /// Base64加密 /// </summ ...

  3. hdu1561之树形dp

    The more, The Better Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  4. Vue--axios:vue中的ajax异步请求(发送和请求数据)、vue-resource异步请求和跨域

    跨域原理: 一.使用axios发送get请求 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 & ...

  5. memcached整理の实践

    对于memcached使用内存来存取数据,一般情况下,速度比直接从数据库或者文件系统存取要快,memcached最常用的场景是利用其“存取快”来保护数据库,防止高频率存取数据库. 缓存数据库查询结果 ...

  6. ORM,Entity Framework介绍以及其所包含的基础架构介绍

    一:entity framework 6.0 ORM (实体关系模型) O: Domain Object 领域模型 R: Relational Database 关系型数据库 M: Mapping 映 ...

  7. c# mvc 第三方定时 FluentScheduler

    开头无关内容,可略过: 最近工作和生活都忙的不可开交了. 工作和生活上都不太顺利,5月底出了车祸回家养伤.6月忙着今年的大事. 给自己鼓鼓励吧 最近重拾nodejs和python,也给自己动力,继续学 ...

  8. C#反射(转载)

    转载原文出处忘了,一直保存在本地(勿怪) 前期准备 在VS2012中新建一个控制台应用程序(我的命名是ReflectionStudy),这个项目是基于.net 4.0.接着我们打开Program.cs ...

  9. Centos部署Abp zero常见问题及处理

    多租户切换,多语言切换异常 解决: 修改nginx配置,在nginx.conf中 增加 #多租户问题 ignore_invalid_headers off; 修改应用程序Logo异常处理 异常: Sy ...

  10. 爬虫开发python工具包介绍 (2)

    本文来自网易云社区 作者:王涛 可选参数我们一一介绍一下: 参数 释义 示例 params 生成url中?号后面的查询Key=value 示例1: >>>payload = {'ke ...