Docker最全教程之使用PHP搭建个人博客站点(二十二)
<h1>目录</h1><ul class="list-paddingleft-2">
<li>
<p data-mid=""><strong>官方镜像 </strong></p>
</li>
<li>
<p data-mid=""><strong>编写简单的Hello world!</strong></p>
</li>
</ul>
<p style="margin-left: 60px">1. 编写Hello world! </p>
<p style="margin-left: 60px">2. 编写Dockerfile </p>
<p style="margin-left: 60px">3. 构建并运行 </p>
<p style="margin-left: 60px">4. 直接使用PHP Docker镜像运行PHP脚本 </p>
<ul class="list-paddingleft-2">
<li>
<p data-mid=""><strong>构建自己的WordPress镜像用于搭建个人博客站点 </strong></p>
</li>
</ul>
<p style="margin-left: 60px">1. 准备MySQL数据库 </p>
<p style="margin-left: 60px">2. 跑起来 </p>
<ul class="list-paddingleft-2">
<li>
<p data-mid=""><strong>修改PHP的文件上传大小限制 </strong></p>
</li>
</ul>
<p style="margin-left: 60px">1. 修改Dockerfile,构建自己的镜像 </p>
<p style="margin-left: 60px">2. 通过“-v”参数将容器内指定路径映射到主机目录的自定义的配置文件 </p>
<p style="margin-left: 60px">3. 通过“exec”命令进入容器内部修改相关配置 </p>
<hr>
<p>PHP(全名:PHP: Hypertext Preprocessor)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。</p>
<hr>
<p> </p>
<h1>官方镜像</h1>
<p>官方镜像地址:https://hub.docker.com/_/php</p>
<p><img src="https://img2018.cnblogs.com/blog/70544/201905/70544-20190530100522205-1894696932.png" alt=""></p>
<hr>
<h1>编写简单的Hello world!</h1>
<h2 class="a0">1. 编写Hello world!</h2>
<p>代码及其简单,如下所示:</p>
<div class="cnblogs_code">
<pre><?<span style="color: rgba(0, 0, 0, 1)">php
echo </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Hello world</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
</span>?></pre>
</div>
<h2 class="a0">2. 编写Dockerfile</h2>
<p>Dockerfile文件如下所示:</p>
<div class="cnblogs_code">
<pre>#镜像版本见:https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">hub.docker.com/_/php</span>
<span style="color: rgba(0, 0, 0, 1)">
FROM php:</span><span style="color: rgba(128, 0, 128, 1)">7.3</span>-cli-alpine3.<span style="color: rgba(128, 0, 128, 1)">9</span><span style="color: rgba(0, 0, 0, 1)">
COPY . </span>/usr/src/<span style="color: rgba(0, 0, 0, 1)">myapp
WORKDIR </span>/usr/src/<span style="color: rgba(0, 0, 0, 1)">myapp
#运行php脚本
CMD [ </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">php</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">./test.php</span><span style="color: rgba(128, 0, 0, 1)">"</span> ]</pre>
</div>
<p>这里之所以选择了alpine的镜像,主要是体积更小:</p>
<p><img src="https://img2018.cnblogs.com/blog/70544/201905/70544-20190530100725163-1331752179.png" alt=""></p>
<h2 class="a0">3. 构建并运行</h2>
<p>构建命令如下所示:</p>
<div class="cnblogs_code">
<pre>docker build --rm -f <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">dockerfile</span><span style="color: rgba(128, 0, 0, 1)">"</span> -t phptest1:latest .</pre>
</div>
<p><img src="https://img2018.cnblogs.com/blog/70544/201905/70544-20190530100811482-1484026576.png" alt=""></p>
<p>运行:</p>
<p> <img src="https://img2018.cnblogs.com/blog/70544/201905/70544-20190530100831241-276345002.png" alt=""></p>
<h2 class="a0">4. 直接使用PHP Docker镜像运行PHP脚本</h2>
<p>在日常开发中,如果我们只是编写简单的PHP脚本用于简单的实践,那么我们完全可以</p>
<p>直接使用PHP Docker镜像来运行PHP脚本,避免反复的构建过程,从而加速开发:</p>
<div class="cnblogs_code">
<pre>docker run -it --<span style="color: rgba(0, 0, 0, 1)">rm`
</span>--name php-running-<span style="color: rgba(0, 0, 0, 1)">script `
</span>-v D:\temp\php:/usr/src/<span style="color: rgba(0, 0, 0, 1)">myapp `
</span>-w /usr/src/<span style="color: rgba(0, 0, 0, 1)">myapp `
php php test.php</span></pre>
</div>
<p>运行命令参数说明大家可以回顾前面的内容,以上命令主体操作如下:</p>
<ul>
<li>运行php最新镜像,运行完成后自动删除容器。其中“-it”等同于“-ti”等同于“-i -t”,也就是让容器的标准输入保持打开,然后分配一个伪终端并绑定到容器的标准输入上;</li>
<li>容器名称为“php-running-script”;</li>
<li>将主机目录“D:\temp\php”加载为数据卷,映射到容器内目录“/usr/src/myapp”。关于数据卷的相关讲解,我们在后续的章节会结合相关实践进一步讲解;</li>
<li>指定工作目录“/usr/src/myapp”;</li>
<li>执行PHP脚本“test.php”。</li>
</ul>
<p><img src="https://img2018.cnblogs.com/blog/70544/201905/70544-20190530101048225-1638488243.png" alt=""></p>
<hr>
<h1>构建自己的WordPress镜像用于搭建个人博客站点</h1>
<p>WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。</p>
<p>WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的,用户可以在支持 PHP 和 MySQL数据库的服务器上使用自己的博客。</p>
<p>WordPress官方镜像地址为:https://hub.docker.com/_/wordpress</p>
<p><img src="https://img2018.cnblogs.com/blog/70544/201905/70544-20190530101152083-111865078.png" alt=""></p>
<p> </p>
<p>接下来,我们就基于官方镜像开始搭建。</p>
<h2>1.准备MySQL数据库</h2>
<p>我们先需要准备一个MySQl数据库,大家可以使用现成的MySQL数据库,也可以参考数据库容器化的相关章节来进行搭建。</p>
<p>参考命令如下所示:</p>
<div class="cnblogs_code">
<pre>docker run --name mysql -e MYSQL_ROOT_PASSWORD=<span style="color: rgba(128, 0, 128, 1)">123456</span> -p <span style="color: rgba(128, 0, 128, 1)">3306</span>:<span style="color: rgba(128, 0, 128, 1)">3306</span> -d mysql</pre>
</div>
<p class="a"><span style="background-color: rgba(0, 204, 255, 1)"><em>注意:MySQL容器创建完成后,需要对root账号进行设置才能够通过数据库连接访问MySQL,具体见数据库容器化相关章节。</em></span></p>
<p> <img src="https://img2018.cnblogs.com/blog/70544/201905/70544-20190530101306786-2050155658.png" alt=""></p>
<h2>2.跑起来</h2>
<p>接下来,我们就可以运行WordPress镜像了,参考命令如下所示:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">docker run `
</span>--<span style="color: rgba(0, 0, 0, 1)">name myblog `
</span>--<span style="color: rgba(0, 0, 0, 1)">link mysql:wordpressdb `
</span>-e WORDPRESS_DB_HOST=wordpressdb:<span style="color: rgba(128, 0, 128, 1)">3306</span><span style="color: rgba(0, 0, 0, 1)"> `
</span>-e WORDPRESS_DB_PASSWORD=<span style="color: rgba(128, 0, 128, 1)">123456</span><span style="color: rgba(0, 0, 0, 1)"> `
</span>-e WORDPRESS_DB_NAME=<span style="color: rgba(0, 0, 0, 1)">wordpress `
</span>-p <span style="color: rgba(128, 0, 128, 1)">3000</span>:<span style="color: rgba(128, 0, 128, 1)">80</span><span style="color: rgba(0, 0, 0, 1)"> `
wordpress</span></pre>
</div>
<p>如上述命令,我们基于WordPressWordPress镜像创建了一个名为myblog的容器,外部端口为3000,容器端口为80。然后使用“--link”参数将该容器和mysql容器(上一步创建的MySQL容器)建立了链接,是其能否访问mysql容器,并且建立了别名wordpressdb。接下来,通过环境变量设置了WordPress的MySQL的一些参数,比如数据库服务器、密码、库名称。运行结果如下图所示:</p>
<p><img src="https://img2018.cnblogs.com/blog/70544/201905/70544-20190530101356570-1200808314.png" alt=""></p>
<p>接下来,我们访问我们的博客网址“http://localhost:3000/”试试:</p>
<p><img src="https://img2018.cnblogs.com/blog/70544/201905/70544-20190530101428239-910427651.png" alt=""></p>
<p>经过一些简单设置,我们又为WordPress添加了一个即将关站的博客站:</p>
<p><img src="https://img2018.cnblogs.com/blog/70544/201905/70544-20190530101452406-1694882693.png" alt=""></p>
<hr>
<h1 class="3"> </h1>
<h1 class="3">修改PHP的文件上传大小限制</h1>
<p>基于Docker运行PHP应用,经常会遇到文件上传大小限制的问题。比如刚刚部署的WordPress个人博客站点,如果我们上传一些个人主题,很容易就突破了PHP的文件上传大小限制(默认2M,对应设置key为“upload_max_filesize”),这时我们有以下方式进行处理:</p>
<h2>1.修改Dockerfile,构建自己的镜像</h2>
<p>使用自己的php配置文件(php.ini)替换默认的php配置文件。如基于wordpress镜像构建自己的镜像,添加类似于“COPY ./config/php.ini /usr/local/etc/php/conf.d/”的复制命令。</p>
<h2>2.通过“-v”参数将容器内指定路径映射到主机目录的自定义的配置文件</h2>
<p>例如“-v d:/tmp/php/php.ini:/usr/local/etc/php/conf.d/uploads.ini”。</p>
<h2>3.通过“exec”命令进入容器内部修改相关配置</h2>
</div>
<div id="MySignature" role="contentinfo">
作者:雪雁<br>出处:http://www.cnblogs.com/codelove/
<br>如果喜欢作者的文章,请关注【CodeSpirit-码灵】公众号以便第一时间获得最新内容。本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。<br><b>静听鸟语花香,漫赏云卷云舒。</b>
<br>
<img src="https://images.cnblogs.com/cnblogs_com/codelove/315887/o_251224070213_%E5%85%AC%E4%BC%97%E5%8F%B7.jpg" width="100" height="100"><br><br>
来源:https://www.cnblogs.com/codelove/p/10948053.html
頁:
[1]