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 镜像
访问ip:8020
出现tomcat 的页面
5. 调试dockerfile
进入容器,查看dockerfile中操作是否在容器中生效