docker搭建apache+php+mysql

一、mysql镜像创建及上传

1、Dockerfile文件

#name:Mydql<span style="white-space:pre"> </span>  

#use:store  

#date:2016-6-4  

  

FROM centos<span style="white-space:pre">     </span>#基础镜像  

MAINTAINER niufeiy niufeiy@gmail.com<span style="white-space:pre">        </span>#声明维护者信息  

WORKDIR /root/<span style="white-space:pre">          </span>#工作目录  

RUN yum -y install wget<span style="white-space:pre">             </span>#centos7默认没有mysql源,需要下载并安装  

RUN wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm<span style="white-space:pre">     </span>  

RUN rpm -ivh /root/mysql-community-release-el7-5.noarch.rpm  

RUN yum -y install mysql-server<span style="white-space:pre">         </span>#安装mysql务  

RUN mysql_install_db --user=mysql<span style="white-space:pre">       </span>#创建数据库  

ENV MYSQL_USER test<span style="white-space:pre">         </span>#用户名  

ENV MYSQL_PASS password<span style="white-space:pre">         </span>#密码  

ENV LC_ALL en_US.UTF-8<span style="white-space:pre">      </span>#中文支持  

ADD build_table.sh /root/build_table.sh<span style="white-space:pre">     </span>#利用脚本创建数据库和表  

RUN chmod u+x /root/build_table.sh<span style="white-space:pre">  </span>#给执行权限  

RUN /root/build_table.sh<span style="white-space:pre">    </span>  

EXPOSE 3306<span style="white-space:pre">         </span>#导出3306端口  

ADD run.sh /root/run.sh<span style="white-space:pre">     </span>#脚本启动  

RUN chmod u+x /root/run.sh  

CMD /root/run.sh  

2、build_table.sh文件

#!bin/bash  

mysqld_safe &  

sleep 3  

mysql -e "GRANT ALL PRIVILEGES ON *.* TO '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASS' WITH GRANT OPTION;"<span style="white-space:pre">      </span>#授权  

mysql -e "create database scores"<span style="white-space:pre">   </span>#创建scores数据库<span style="white-space:pre">   </span>  

mysql -e "create table scores.name_score(name char(20) not null,score int not null)DEFAULT CHARSET=utf8"<span style="white-space:pre">    </span>#创建name_score表格  

mysql -e "insert into scores.name_score values ('李明',80),('张军',90),('王小二',95)"  

3、run.sh文件

#!/bin/bash  

mysqld_safe  

3、创建上传镜像到docker hub

3个文件都准备好了,开始创建

创建镜像,其中niufeiy是我docker hub账户名称

# docker build -t niufeiy/centos-mysql:v1 ./       #成功会返回Successfully built 230ssn5d15d 字样  

通过docker push上传

# docker push niufeiy/centos-mysql:v1  

第一次需要提示输入账号和密码,如果没有账号,请自行注册

现在mysql镜像就注册好了
 

二、php+apache镜像创建及上传

与mysql类似

1、Dockerfile文件

#name:PHP + APACHE  

#use:store  

#date:2016-6-4  

  

FROM centos  

MAINTAINER niufeiy niufeiy@gmail.com  

WORKDIR /root/  

RUN yum -y install httpd php || true<span style="white-space:pre">        </span>#安装apache,php  ||true 保证整个命令返回true  

RUN yum -y install mysql php-mysqlnd<span style="white-space:pre">        </span>#安装mysql客户端 与 php-mysqlnd  

RUN mkdir /var/log/httpd1<span style="white-space:pre">           </span>#创建必要目录  

RUN mkdir /var/www1/<span style="white-space:pre">    </span>  

RUN mkdir /var/www1/html/  

ENV MYSQL_ADDR 172.17.0.36:3306<span style="white-space:pre">     </span>#定义远程mysql地址、用户名和密码 ip为docker ip  

ENV MYSQL_USRR test  

ENV MYSQL_PASS password  

ENV TERM linux  

ENV LC_ALL en_US.UTF-8  

ADD test.php /var/www/html/test.php<span style="white-space:pre"> </span>#添加测试文件  

EXPOSE 80<span style="white-space:pre">               </span>#导出apache 80端口  

ADD run.sh /root/run.sh<span style="white-space:pre">     </span>#添加启动脚本  

RUN chmod u+x /root/run.sh  

CMD /root/run.sh  

2、run.sh文件

#!/bin/bash  

httpd   #启动httpd  

while true;do sleep 1000;done<span style="white-space:pre">   </span>#防止脚本结束  

3、test.php测试文件

<?php 

    $con = mysql_connect(getenv("MYSQL_ADDR"),getenv("MYSQL_USER"),getenv("MYSQL_PASS"));  

    if(!$con)  

    {  

        die('失败: '.mysql_error());  

    }  

    else  

    {  

        mysql_query("SET NAMES utf8");  

       mysql_select_db("scores",$con);  

        $result = mysql_query("SELETC * FROM name_score");  

        while($row = mysql_fetch_array($$result))  

       {  

            echo $row['name']." ".$row['score'];  

            echo "<br />";  

        }  

    }  

    mysql_close($con);  

?>  

说明:test.php所做的工作就是链接到指定mysql服务器,查询scores.name_score表,并按每条一行显示
 

4、创建上传镜像到docker hub

docker build -t niufeiy/centos-apache-php:v1 ./<pre name="code" class="html"># docker push niufeiy/centos-apache-php:v1   



 

三、启动容器

启动mysql容器

docker run -d --name test_mysql -P niufeiy/centos-mysql:v1  

docker port 634d9b48e9ae 3306 <span style="white-space:pre">    </span>#查看本机映射到3306的端口(49171)  


启动apache-php容器

docker run -d --name test_apache-php -P -e MYSQL_ADDR=192.168.10.69.158:49171  niufeiy/centos-apache-php:v1  

说明:192.168.75.158为宿主机ip,49171端口为映射到mysql的都主机端口

查看apache对应的宿主机端口

#docker port 458c5ae86cc 80   #对应宿主机49172端口  

四、测试


接下来就可以通过浏览器访问该web服务了

http;//192.168.10.69:19172/test.php

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值