使用的是centos7构建的java运行环境镜像,都是将稳定版本的jdk和工具一起打包在一个镜像,没有通过yum安装
- Dockerfile文件内容
# 指定基础镜像
FROM centos:7
# MAINTAINER 指明了当前 Dockerfile 的维护者信息,但是这个指令即将被废弃(deprecated),取而代之使用 LABEL 指令,一般把多个键值对放到一条 LABEL 指令里面,以减少镜像的层数
LABEL maintainer="java runtime environment <[email protected]>"
# 指定容器中的当前用户
USER root
# ENV 一般把多个键值对放到一条 ENV 指令里面,以减少镜像的层数
ENV JAVA_HOME=/usr/java/jdk1.7.0_79 \
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib \
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/binsource
# 复制本地文件到镜像里面
COPY jdk-7u79-linux-x64.rpm /usr/local
COPY docker-entrypoint.sh /usr/local/bin
COPY apache-activemq-5.10.0 /data/apache-activemq-5.10.0
ADD wkhtmltox-0.12.3_linux-generic-amd64.tar.xz /usr/bin
COPY tomcat6 /data/tomcat6
# RUN 最好把尽可能多的相关命令放到一条 RUN 指令当中,使用 && 进行拼接,可以减少镜像的层数和大小
RUN chmod +x /usr/local/jdk-7u79-linux-x64.rpm \
&& rpm -ivh /usr/local/jdk-7u79-linux-x64.rpm \
&& chmod 755 /usr/local/bin/docker-entrypoint.sh \
&& cp /usr/bin/wkhtmltox/bin/wkhtmltopdf /usr/bin \
&& chmod +x /usr/bin/wkhtmltopdf
# 暴露多端口
EXPOSE 18162 8086
# 容器启动的入口点
ENTRYPOINT ["docker-entrypoint.sh"]
- 执行shell脚本内容
#!/bin/bash
chmod a+x /data/apache-activemq-5.10.0/bin/activemq
cd /data/apache-activemq-5.10.0/bin && ./activemq setup /root/.activemqrc
chmod 600 /root/.activemqrc
./activemq start
tail -f /dev/null