利用Dockerfile构建一个基于CentOS 7镜像
利用Dockerfile构建一个基于CentOS 7,包括java 8, tomcat 7,php ,mysql+mycat的镜像。
Dockerfile内容如下:
FROM centos
MAINTAINER Victor root@linuxidc.com
WORKDIR /root
RUN rm -f /etc/yum.repos.d/*
RUN echo '[BASE]' > /etc/yum.repos.d/base.repo
RUN echo 'name=base' >> /etc/yum.repos.d/base.repo
RUN echo 'baseurl=http://192.168.244.132/yum/mnt' >> /etc/yum.repos.d/base.repo
RUN echo 'enabled=1' >> /etc/yum.repos.d/base.repo
RUN echo 'gpgcheck=0' >> /etc/yum.repos.d/base.repo
ADD /mysql /mysql
RUN yum -y install java-1.8.0-openjdk wget httpd php php-mysqlnd /mysql/*
RUN mysql_install_db --user=mysql
ENV MYSQL_ROOT_PASSWORD=123456
ENV MYCAT_USER mycat
ENV MYCAT_PASS mycat
RUN wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.64/bin/apache-tomcat-7.0.64.tar.gz
RUN tar xvf apache-tomcat-7.0.64.tar.gz -C /usr/local/ && mv /usr/local/apache-tomcat-7.0.64/ /usr/local/tomcat
RUN wget http://code.taobao.org/svn/openclouddb/downloads/old/MyCat-Sever-1.2/Mycat-server-1.2-GA-linux.tar.gz
RUN mkdir /usr/local/mycat && tar xvf Mycat-server-1.2-GA-linux.tar.gz -C /usr/local/mycat && useradd mycat && \
chown -R mycat.mycat /usr/local/mycat && chmod a+x /usr/local/mycat/bin/*
EXPOSE 8080 8066 9066
COPY startup.sh /root/startup.sh
RUN chmod a+x /root/startup.sh
ENTRYPOINT /root/startup.sh
说明如下:
1. 以下用于构建yum源,由于公司网络有所限制,安装依赖包的过程让人泪奔…故果断利用宿主机的中的系统光盘搭建http yum源。
RUN rm -f /etc/yum.repos.d/*
RUN echo '[BASE]' > /etc/yum.repos.d/base.repo
RUN echo 'name=base' >> /etc/yum.repos.d/base.repo
RUN echo 'baseurl=http://192.168.244.132/yum/mnt' >> /etc/yum.repos.d/base.repo
RUN echo 'enabled=1' >> /etc/yum.repos.d/base.repo
RUN echo 'gpgcheck=0' >> /etc/yum.repos.d/base.repo
2. 因为centos 7 的系统光盘中没有自带mysql-server,故需要自己下载,正好,mysql社区也提供了基于mysql-serve的yum源,只需在/etc/yum.repos.d/目录下添加以下文件mysql-community.repo文件,内容如下:
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/5/$basearch/
enabled=1
gpgcheck=0
即便是这种方式,下载过程同样让人极度崩溃,无奈,只好自己下载了相关的rpm包,放到本地mysql目录下,通过ADD命令将该目录下的文件COPY到镜像中。注意:/mysql是相对于Dockerfile的相对路径,因为我的Dockerfile的绝对路径为/root/Dockerfile,所以,下面中/mysql中绝对路径实际上也是/root/mysql/。
ADD /mysql /mysql
/root/mysql中的文件如下:
[root@localhost ~]# ls /root/mysql/
mysql-5.6.26-2.el5.x86_64.rpm mysql-community-libs-5.6.26-2.el5.x86_64.rpm
mysql-community-client-5.6.26-2.el5.x86_64.rpm mysql-community-libs-compat-5.6.26-2.el5.x86_64.rpm
mysql-community-common-5.6.26-2.el5.x86_64.rpm mysql-community-server-5.6.26-2.el5.x86_64.rpm
3. 最后一步实际上用脚本进行启动
脚本内容如下:
[root@localhost ~]# cat /root/startup.sh
#!/bin/bash
sed -i 's/user name="test"/user name=\"'"$MYCAT_USER"'"/' /usr/local/mycat/conf/server.xml
sed -i 's/name="password">test/name="password">'"$MYCAT_PASS"'/' /usr/local/mycat/conf/server.xml
mysqld_safe & /usr/local/mycat/bin/mycat start & httpd & /usr/local/tomcat/bin/catalina.sh run
在该启动脚本中,利用参数的方式设定mycat的用户名和密码,用户名和密码有Dockerfile中的以下变量指定:
ENV MYCAT_USER mycat
ENV MYCAT_PASS mycat
注意:在创建基于该镜像的容器时,也可通过-e参数显性指定以上两个参数的值,如果没有指定,则用户名和密码的默认值均为Dockerfile中指定的mycat。
验证如下:
1. 基于Docker生成镜像
# docker build -t victor/mycat:v1 .
建议:在利用Dockerfile构建镜像时,可带上--rm=false参数,即 docker build -rm=false -t victor/mycat:v1 .意思是不删除build镜像过程中产生的中间容器,这样的话,即便这次构建失败了,再次构建的时候会直接利用cache容器,会方便快捷很多。
2. 查看生成的镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
victor/mycat v1 5091cdf7b73a 2 hours ago 1.058 GB
3. 运行容器
# docker run -p 8080:8080 -p 9066:9066 -p 8066:8066 -p 81:80 victor/mycat:v1
首先验证tomcat是否启动

再次验证apache是否正常启动,为了避免和本地的http yum源冲突,我这边用的是宿主机的81端口映射容器的80端口

验证mycat是否能正常使用

不难看出,基于mycat的默认用户名和密码登陆被拒,必须用指定的用户名和密码。
利用Dockerfile构建一个基于CentOS 7镜像的更多相关文章
- 利用Dockerfile构建一个基于centos 7,包括java 8, tomcat 7,php ,mysql+mycat的镜像
Dockerfile内容如下: FROM centos MAINTAINER Victor ivictor@foxmail.com WORKDIR /root RUN rm -f /etc/yum.r ...
- 使用Dockerfile文件制作centos6.8基础镜像,基于centos基础镜像的ssh远程登录镜像,jdk1.8镜像,tomcat镜像,elasticsearch镜像等等
一.首先制作一个centos6.8的裸机镜像 创建一个干净的目录: [root@docker centos6.]# ls c68-docker.tar.xz Dockerfile Dockerfile ...
- 利用 vue-cli 构建一个 Vue 项目
一.项目初始构建 现在如果要构建一个 Vue 的项目,最方便的方式,莫过于使用官方的 vue-cli . 首先,咱们先来全局安装 vue-cli ,打开命令行工具,输入以下命令: $ npm inst ...
- 利用ELK构建一个小型的日志收集平台
利用ELK构建一个小型日志收集平台 伴随着应用以及集群的扩展,查看日志的方式总是不方便,我们希望可以有一个便于我们查询及提醒功能的平台:那么首先需要剖析有几步呢? 格式定义 --> 日志收集 - ...
- 使用 XMPP 构建一个基于 web 的通知工具——转
Inserting of file(使用 XMPP 构建一个基于 web 的通知工具.docx) failed. Please try again. http://www.ibm.com/develo ...
- Docker在Centos下使用Dockerfile构建远程Tomcat和Jenkins镜像
镜像构建准备环境原料 构建CentOS Docker tomcat镜像 Dockerfile文件内容: FROM centos:latest MAINTAINER boonya <boonya@ ...
- Nodejs课堂笔记-第三课 构建一个nodejs的Docker镜像
本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢! 因为一直做Linux有关的开发工作,所以不习惯在Windows平台编译和测试 ...
- Docker - 构建一个简单的应用镜像
概述 做个简单的可用镜像 背景 之前的镜像, 都是 命令教程 类的 这次我想构建一个 可以用的 简单镜像镜像 1. 环境 os centos7 docker 18.09 docker image ja ...
- 开源低代码平台开发实践二:从 0 构建一个基于 ER 图的低代码后端
前后端分离了! 第一次知道这个事情的时候,内心是困惑的. 前端都出去搞 SPA,SEO 们同意吗? 后来,SSR 来了. 他说:"SEO 们同意了!" 任何人的反对,都没用了,时代 ...
随机推荐
- perl chomp 函数的真正作用
之前一直以为chomp函数只是去掉字符串末尾的\n, 但是今天写程序遇到一个bug,最后的原因就处在chomp上: 读取fasta文件,内容如下: >1 ATGCTAGCTACGTACGTACG ...
- VirtualBox 配置虚拟网卡(桥接),实现主机-虚拟机网络互通
记录下VirtualBox 配置虚拟网卡(桥接),实现主机-虚拟机网络互通过程,网上搜出来的比较乱,讲的不明不白,因此根据自己弄过一次,确认可行的方式,做个备份,方便日后查阅. 环境: 在Oracle ...
- otunnel : 一个和lcx差不多的端口转发的工具
项目地址 ooclab/otunnel 下载地址(内涵各大平台) http://dl.ooclab.com/otunnel/ otunnel 用法 前提: 1. 假设 server 的地址为 exam ...
- jQuery-理解选择结果
使用$函数选择元素返回的是一个对象,可以称这个对象为jQuery对象,在jQuery执行一些操作的时候很多情况下都是返回的jQuery对象. jQuery中常用处理结果集的方法和属性 表达式 例子 说 ...
- c++ double float 数值比较
浮点数在内存中的存储机制和整型数不同,其有舍入误差,在计算机中用近似表示任意某个实数.具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基 ...
- informatica 中的workflow连接mysql数据配置DSN
先要下载mysqlodbc 一步步安装之后 ,再从管理工具里面找到ODBC,最后选择系统DSN,添加mysql驱动之后,进入添加编辑: 在workflow里面的配置连接字符串就写刚刚配置的连接名称 比 ...
- make的自动变量和预定义变量
make的自动变量 $@ 规则目标的文件名.如果目标是档案文件的一个成员,"$@"就是档案文件的名称 $% 当目标是档案文件的一个成员时,"$%"是该成员的名称 ...
- MathType中常见的两种符号的运用
想要让公式编辑得快速又高效,MathType数学公式编辑器这个神助攻是少不了的.MathType是一款专用的数学公式编辑器,用它来编辑公式非常方便实用,并且排版也非常简单.下面介绍两种常见符号的应用. ...
- Python MySQLdb 模块
MySQLdb 是 Python2 连接 MySQL 的一个模块,常见用法如下: [root@localhost ~]$ yum install -y MySQL-python # 安装 MySQLd ...
- VS2015编译CURL7.54.0源码
2018.8.24找到一种新途径,运行curl-master\projects\generate.bat,然后curl-master\projects\Windows\VC14\curl-all.sl ...