Dockerfile多工程构建以及启动脚本(docker容器之间使用link通信)

业务需要给用户准备一个随时部署的demo,多工程构建到一个镜像,并打包提供启动脚本

  1. Dockerfile

      

FROM centos:centos7
MAINTAINER humingfeng
# 1.准备工作创建文件夹
    RUN \
    mkdir -p /usr/local
# 复制文件
COPY jdk-7u80-linux-x64.tar.gz /usr/local
COPY apache-tomcat-7.0.91-auth.tar.gz /usr/local
COPY apache-tomcat-7.0.91-tdesop.tar.gz /usr/local
COPY redis-5.0.0.tar.gz /usr/local
COPY redis.conf /usr/local
#安装vim编辑器
RUN yum -y install vim && yum -y install gcc automake autoconf libtool make
# 安装JDK
RUN \
    cd /usr/local \
    && tar -xzf jdk-7u80-linux-x64.tar.gz
# 安装redis
RUN \
    yum install gcc -y \
    && cd /usr/local \
    && tar -xzf redis-5.0.0.tar.gz \
    && rm -rf redis-5.0.0.tar.gz \
    && cd redis-5.0.0 && yum -y install tcl && make && make install \
    && cd /usr/local \
	&& cp redis.conf redis-5.0.0/src \
    && rm -rf /var/cache/yum/*
# 解压tomcat
RUN \
    cd /usr/local \
    && tar -xzf apache-tomcat-7.0.91-auth.tar.gz \
    && tar -xzf apache-tomcat-7.0.91-tdesop.tar.gz
#设置工作访问时候的WORKDIR路径,登陆落脚点
ENV MYPATH /usr/local
WORKDIR $MYPATH
# 配置java与tomcat环境变量
ENV JAVA_HOME /usr/local/jdk-7u80-linux-x64
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

EXPOSE 8080 8081 6379
ENTRYPOINT /usr/local/redis-5.0.0/src/redis-server redis.conf &&  /usr/local/apache-tomcat-7.0.91-tdesop/bin/startup.sh && /usr/local/apache-tomcat-7.0.91-auth/bin/startup.sh && tail -f /usr/local/apache-tomcat-7.0.91-tdesop/logs/catalina.out
CMD /usr/sbin/init
  1. 启动脚本

   将修改的容器提交镜像并打tar包后,写启动脚本(PS:由于后面多了一个关联的MySQL镜像,故不需要的可以自行删除注释,需要的自己准备MySQL镜像并导出数据)

  

#! /bin/bash
# author:humingfeng
# description:自定义数据交换平台镜像运行

PRO_NAME_BUILD="3dportal/person"
DB_NAME_BUILD="mysql/person"

echo "****欢迎使用自定义镜像docker服务!****"

echo "****第一步:检查当前目录下的自定义镜像****"

if test -w portal.tar
then
    echo '==>>镜像文件存在并可写!'
else
    echo '==>>镜像文件不存在或者没有写权限!开始赋予权限中'
	
	chmod 755 portal.tar
	
	if test -w portal.tar
	then
		echo '==>>镜像文件可写!'
	else
		echo '==>>镜像文件不存在或者无法赋予写权限!'
		exit 126
	fi
fi

echo "****第二步:判断docker环境,如果存在相同容器和镜像则删除****"

if docker ps -a | grep -i $PRO_NAME_BUILD ; then

	docker rm -f $PRO_NAME_BUILD
	docker rmi -f $PRO_NAME_BUILD
	
	echo "==>>删除已存在工程容器和镜像"
	
	else
	
	echo "==>>不存在工程容器"
fi

if docker ps -a | grep -i $DB_NAME_BUILD ; then

	docker rm -f $DB_NAME_BUILD
	docker rmi -f $DB_NAME_BUILD
	
	echo "==>>删除已存在数据库容器和镜像"
	
	else
	
	echo "==>>不存在数据库容器"
fi

echo "****第三步:导入自定义镜像****"

docker load < portal.tar

echo "****第四步:指定自定义镜像运行容器****"

docker run -p 3306:3306 --name person_mysql -e MYSQL_ROOT_PASSWORD=Gwssi@2017 -d $DB_NAME_BUILD

docker run --name 3dportal --link person_mysql:mysql_person -d -p 8080:8080 -d -p 8081:8081 -d -p 6379:6379 $PRO_NAME_BUILD

echo "****容器启动成功:交换平台登录端口:8080,认证登录端口:8081,MySQL端口:3306,Redis端口:6379****"

 

posted @ 2018-11-26 22:45  御前提笔小书童  阅读(748)  评论(0编辑  收藏  举报