基于apline 自定义Docker镜像(向原有的镜像中追加tomcat)

开发十年,就只剩下这套Java开发体系了 >>>   hot3.png

目标:alpine + jdk8 + openJ9 + tomcat7 

上述镜像可以基于 ssuhvs/alpine-openjdk8-openj9:v1.2 ,再追加一个tomcat7即可 。至于为什么使用openJ9 网上有很多说明,我的个人网站:啰嗦的VIP 使用openJ9前经常出现内存报警,使用openJ9运行之后内存占用明显下降!再没有出现过应用宕掉的问题!

步骤:

1、下载原有镜像 (这个镜像的说明请看这里)

docker pull ssuhvs/alpine-openjdk8-openj9:v1.2

2、生成容器:

docker run -dit --name tomcat7  ssuhvs/alpine-openjdk8-openj9:v1.2

这时输入docker ps已经能看到正在运行的 容器了,下一步是进入容器安装tomcat7 ,并提交就可以了! 注意上面的启动参数里的 -d 代表可以后台运行,不然退出容器后所有数据会丢失!!

已经制作好的镜像名称: ssuhvs/alpine-openjdk8-openj9:v1.2_tomcat7 

3、进入容器安装 tomcat 到 /opt/ 下

docker exec -it tomcat7 /bin/sh

 cd到/opt/目录下,使用wget 命令下载 tomcat7

wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.90/bin/apache-tomcat-7.0.90.tar.gz

解压:  tar -zxvf  apache-tomcat-7.0.90.tar.gz 

然后退出容器,在外部提交tomcat7容器到镜像文件中, 版本tag为 v1.2_tomcat7.0.90

docker commit tomcat7 lostvip/alpine-openjdk8-openj9:v1.2_tomcat7.0.90

4、这时tomcat还不能随容器启动,需要写个Dockerfile来设置自启动,最后面一行就是启动命令:

FROM alpine-openjdk8-openj9:v1.2_tomcat7.0.90
MAINTAINER lostvip
ENV REFRESHED_AT 2018-07-12

#公开端口
EXPOSE 8080
#设置启动命令,注意这里的启动脚本不是start.sh
ENTRYPOINT ["/usr/tomcat/bin/catalina.sh","run"]

Dockerfile 随便放到一个目录即可,然后进入此目录执行(注意最后面要有一个.):

docker build -t alpine-openjdk8-openj9:v1.2_tomcat7.0.90 .

这样就生成了我们需要的镜像了,并覆盖掉原来的旧镜像。

如果要提交到hub.docker.com可以:

docker login   后 输入用户名、密码 登录成功后再推送镜像即可

docker push alpine-openjdk8-openj9:v1.2_tomcat7.0.90

如果想使用本人的镜像可以从这里获取:

https://hub.docker.com/r/ssuhvs/alpine-openjdk8-openj9/

或者直接:docker pull alpine-openjdk8-openj9:v1.2_tomcat7.0.90

此镜像中tomcat的安装目录:/opt/apache-tomcat-7.0.90 

5、附录:docker compsoe 中可以这样使用(端口映射到8881上)

version: '2'
  tomcat8881:
    image: ssuhvs/alpine-openjdk8-openj9:v1.2_tomcat7.0.90
    hostname: tomcat8881
    container_name: tomcat8881
    privileged: true
    volumes:
        - ./tomcat/webapps:/opt/apache-tomcat-7.0.90/webapps
        - ./tomcat/logs:/opt/apache-tomcat-7.0.90/logs
        - ./tomcat/upload:/usr/local/upload_by_tomcat
    ports: 
        - "8881:8080"
    #要连接的其它容器服务名
    #links: 
    #  - mysql3306 
    #  - redis6379
    environment:
        TIMEZONE: Asia/Shanghai
        LANG: "zh_CN.UTF-8" 
    ulimits: # 操作系统限制
      nproc: 65535
    mem_limit: 4096m # 最大内存使用不超过4G,我在本地机器上测试,才只写了1024m,生产上需要根据自己的服务器配置,以及docker容器数进行调优.
    restart: always

 

你可能感兴趣的:(基于apline 自定义Docker镜像(向原有的镜像中追加tomcat))