dockerfile制作镜像: jdk+tomcat

1. 编写dockerfile
FROM  centos:7.2.1511
MAINTAINER zhu <[email protected]>


#创建目录
RUN mkdir -p /xx/java/jdk1.8.0_151
#把当前目录下的jdk文件夹添加到镜像
ADD jdk1.8.0_151 /xx/java/jdk1.8.0_151


#创建tomcat目录
RUN mkdir -p /xx/apache-tomcat-7.0.82
#把当前目录下的tomcat文件夹添加到镜像
ADD apache-tomcat-7.0.82 /xx/apache-tomcat-7.0.82


#添加环境变量
ENV JAVA_HOME=/xx/java/jdk1.8.0_151
ENV CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/tools.jar:${JAVA_HOME}/lib/dt.jar
ENV PATH=$PATH:$JAVA_HOME/bin
ENV CATALINA_HOME=/xx/apache-tomcat-7.0.82
ENV PATH=$PATH:${CATALINA_HOME}/bin


#暴露8080端口
EXPOSE 8080

CMD ["/xx/apache-tomcat-7.0.82/bin/catalina.sh","run"]

CMD 必须是此写法。其他CMD bash  xx.sh也是不好使

而且必须catalina.sh,换成startup.sh也是不好使。

docker logs 容器id 查看容器启动日志

原因:

catalina.sh中

 touch "$CATALINA_OUT"
  if [ "$1" = "-security" ] ; then
    if [ $have_tty -eq 1 ]; then
      echo "Using Security Manager"
    fi
    shift
    eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
      -Djava.endorsed.dirs="\"$JAVA_ENDORSED_DIRS\"" -classpath "\"$CLASSPATH\"" \
      -Djava.security.manager \
      -Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
      -Dcatalina.base="\"$CATALINA_BASE\"" \
      -Dcatalina.home="\"$CATALINA_HOME\"" \
      -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
      org.apache.catalina.startup.Bootstrap "$@" start \
      >> "$CATALINA_OUT" 2>&1 "&"


  else
    eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
      -Djava.endorsed.dirs="\"$JAVA_ENDORSED_DIRS\"" -classpath "\"$CLASSPATH\"" \
      -Dcatalina.base="\"$CATALINA_BASE\"" \
      -Dcatalina.home="\"$CATALINA_HOME\"" \
      -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
      org.apache.catalina.startup.Bootstrap "$@" start \
      >> "$CATALINA_OUT" 2>&1 "&"


  fi

去掉以上红色部分,就可以用startup.sh了

CMD bash /daas/apache-tomcat-7.0.82/bin/startup.sh

也ok了

2. 生成镜像
docker build -t  自定义镜像名字:tag .
例如:
docker build -t  jdk1.8.tomcat7:0.0.1 .




3. 运行
docker run  --name zcy1  -d -p 8020:8080 720902d110bc

验证是否启动成功

docker ps 

如果有就是启动成功,否则失败,需要删除容器,删除镜像,重新制作

docker rm 容器id

docker rmi 镜像


4.验证
访问ip:8020
出现tomcat 的页面


5. 调试dockerfile
进入容器,查看dockerfile中操作是否在容器中生效

猜你喜欢

转载自blog.csdn.net/zhuchunyan_aijia/article/details/80091395