业务需要给用户准备一个随时部署的demo,多工程构建到一个镜像,并打包提供启动脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 FROM centos:centos7 MAINTAINER humingfeng # 1.准备工作创建文件夹 RUN \ mkdir -p /usr/local # 复制文件 COPY jdk-7 u80-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-7 u80-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
将修改的容器提交镜像并打tar包后,写启动脚本(PS:由于后面多了一个关联的MySQL镜像,故不需要的可以自行删除注释,需要的自己准备MySQL镜像并导出数据)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 #! /bin/bash # author:humingfeng # description:自定义数据交换平台镜像运行 PRO_NAME_BUILD="3dportal/person" DB_NAME_BUILD="mysql/person" echo "****欢迎使用自定义镜像docker服务!****" echo "****第一步:检查当前目录下的自定义镜像****" if test -w portal.tarthen 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 3 dportal --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****"
本作品采用知识共享署名 4.0 中国大陆许可协议 进行许可,欢迎转载,但转载请注明来自御前提笔小书童 ,并保持转载后文章内容的完整。本人保留所有版权相关权利。
本文链接:https://royalscholar.cn/2018/11/26/Dockerfile多工程构建以及启动脚本(docker容器之间使用link通信)/