利用Dockerfile构建一个基于centos 7,包括java 8, tomcat 7,php ,mysql+mycat的镜像

Dockerfile内容如下:

FROM centos
MAINTAINER Victor [email protected]
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中的文件如下:

[[email protected] ~]# 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. 最后一步实际上用脚本进行启动

脚本内容如下:

[[email protected] ~]# 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. 查看生成的镜像

[[email protected] ~]# 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的默认用户名和密码登陆被拒,必须用指定的用户名和密码.

参考资料:

1> MyCat_安装指南(linux).doc https://github.com/MyCATApache/Mycat-doc/tree/master/%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97

2> Mysql yum源地址 http://repo.mysql.com/yum/mysql-5.6-community/el/5/x86_64/

3> CentOS yum安装Apache + PHP + Tomcat7 + MySQL http://www.cnblogs.com/jifeng/p/4074591.html

时间: 2024-10-10 13:20:06

利用Dockerfile构建一个基于centos 7,包括java 8, tomcat 7,php ,mysql+mycat的镜像的相关文章

利用Dockerfile构建一个基于CentOS 7镜像

利用Dockerfile构建一个基于CentOS 7,包括java 8, tomcat 7,php ,mysql+mycat的镜像. Dockerfile内容如下: FROM centosMAINTAINER Victor [email protected]WORKDIR /rootRUN rm -f /etc/yum.repos.d/*RUN  echo '[BASE]' > /etc/yum.repos.d/base.repoRUN  echo 'name=base' >> /etc

一个基于RSA算法的Java数字签名例子

原文地址:一个基于RSA算法的Java数字签名例子 一.前言: 网络数据安全包括数据的本身的安全性.数据的完整性(防止篡改).数据来源的不可否认性等要素.对数据采用加密算法加密可以保证数据本身的安全性,利用消息摘要可以保证数据的完整性,但是还有一点就是数据来源的不可否认性(也就是数据来自哪里接收者是清楚的,而且发送数据者不可抵赖). 有些方案曾经使用消息认证码(MAC)来保证数据来源于合法的发送着,但是利用消息认证码会带来一个问题,就是通讯双方必须事先约定两者之间的通讯用共享密码.在我们的互联网

利用maven构建一个spring mvc的helloworld实例

刚开始学习maven和spring mvc,学的云里雾里的 这里提供一个hello world实例,记录自己的学习之路 首先看maven官网的介绍 Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and do

构建一个基于 Spring 的 RESTful Web Service

本文详细介绍了基于Spring创建一个“hello world” RESTful web service工程的步骤. 目标 构建一个service,接收如下HTTP GET请求: http://localhost:8080/greeting 并返回如下JSON格式的问候语: {"id":1,"content":"Hello, World!"} 你也可以通过指定查询字符串中的可选参数name来定制问候语: http://localhost:8080

Dockerfile构建(ssh、systemctl、nginx、tomcat、mysql)

一.Dockerfile Dockerfile是docker中镜像文件的的描述文件,说的直白点就是镜像文件到底是由什么东西一步步构成的.例如:你在淘宝上买了一个衣架,但是卖家并没有给你发一个完整的衣架,而是一些组件和一张图纸,你按照这个图纸一步一步将衣架组装起来,就成了你所需要的样子.那么 Dockerfile 就是这张图纸,镜像文件就是你需要的这个衣架,Dockerfile 不建议随便命名,就用 Dockerfile.因此,Dockerfile其内部包含了一条条的指令,每一条指令构建一层,因此

基于Dockerfile 构建redis5.0.0(包括持久化)及RedisDestopManager 监控

一 创建Dockerfile [[email protected] docker]# mkdir redis [[email protected] docker]# cd redis && touch Dockerfile 1 #version: 2019-1-28 2 FROM centos:7.5.1804 3 MAINTAINER zxMrlc 4 #前置GCC编译环境 5 RUN ["yum","-y","update"]

利用 CSS3 构建一个气泡对话框

这是一篇CSS3教程 http://www.maiziedu.com/course/228/,主要讲述在不使用图片的情况下如何使用CSS3 创建图像效果. 使用渐进增强的开发方式,因此一开始的界面只要拥有基本样式即可.基本的评论区界面样式如下: 现在我们来逐步完善这个博客的评论区域. word-wrap 当用户在评论区留下一长串的 URL 时,有可能会出现以下情况. 此时需要使用 word-wrap,使用 word-wrap 的原因是基于 Webkit 内核的浏览器以及 IE 在遇到"/&quo

搭建一个基于CentOS的可视化zookeeper管理工具zkUI实现对zk的可视化管理

一. zookeeper 可视化工具 JMX => CLRProfile ZKUI => java写的一个可视化的web网站 github中下载 https://github.com/DeemOpen/zkui git 拉取地址 :https://github.com/DeemOpen/zkui.git CoentOS 安装 git maven 1. git 安装: (在linux下安装卸载git非常方便)  命令 :yum remove git 删除git  命令 :yum -y insta

利用Dockerfile构建各种镜像

docker 使用Dockerfile 创建带jdk 和tomcat的镜像 http://blog.csdn.net/world_ding/article/details/46638371