暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

开发者的花花世界 2019-01-26
327

业务需要给用户准备一个随时部署的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 gccautomake 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 \

    && cdredis-5.0.0 && yum -y install tcl && make && makeinstall \

    && 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-serverredis.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 755portal.tar

       

        if test -wportal.tar

        then

               echo'==>>镜像文件可写!'

        else

               echo'==>>镜像文件不存在或者无法赋予写权限!'

               exit126

        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 -eMYSQL_ROOT_PASSWORD=Gwssi@2017 -d $DB_NAME_BUILD

 

docker run --name 3dportal --linkperson_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****"


 


文章转载自开发者的花花世界,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论