用Docker部署PHP+MySQL服务器

用Docker部署PHP+MySQL服务器

本站内容版权属于本人。转载须告知本人,写明出处,并在文首提供指向本站对应文章的链接。
本文链接:用Docker部署PHP+MySQL服务器

迁移服务器的过程比我想象中的快很多,大概花了3个白天的时间就完成了。同时我也学习到了Docker的一些基本操作。下面就来讲一下各个模块是怎样迁移到Docker上来的。

安装Docker

因为我使用的是ubuntu,所以参考Docker的文档就可以安装上Docker了:https://docs.docker.com/install/linux/docker-ce/ubuntu/。主要有以下语句:

如果安装成功,就可以用以下命令看到Docker的状态了:

默认情况下,Docker必须要使用sudo来运行,但可以将当前用户加入Docker组,就不需要使用sudo了。

安装MySQL

只要一句话就可以启动MySQL的容器:

--detach使容器在后台运行
--restart unless-stopped使容器总能自动重启,除非用stop命令停止
--name mysql容器的名字
mysql容器镜像的名字,可以加:后跟版本

这样启动起来的容器,数据和配置都在容器内部,不方便更新,而且如果删了容器数据就没了,所以要将数据的目录映射到宿主机上。因为我是迁移,所以本来我就有配置和数据在宿主机上,如果没有的话,可以用docker cp命令来将内容复制出来:

然后将启动容器的命令改为:

--volume将宿主机上的目录或文件映射到容器内
安装PHP

我使用了php-fpm来作为服务器,因为有一些网站需要PHP扩展才能使用,这里就不能直接用现有的Docker镜像,而是要自己做镜像。以下命令为Dockerfile建了目录并打开它以编辑。

在Dockerfile中输入以下内容:

FROM下面的语句都是用来安装PHP扩展的,可以按需要增加或者减少。同样可以像MySQL类似将配置和数据拿出到宿主机里,之后就可以编译镜像和启动容器了:

--tag编译生成的镜像文件名和版本
--link将其他容器用网络映射到此容器内

PHP有访问MySQL数据库的需求,比如mysqli_connect的第一个参数为数据库主机,因为已经用--link参数指定mysql容器的主机名为mysql,所以这里的第一个参数写"mysql"就可以了。

安装Nginx

同样把配置文件取出来,然后一句话就可以了:

--publish将容器暴露出来的端口映射到宿主机

为了方便,我将Nginx的数据目录和PHP的数据目录映射到了相同的目录下。这样当Nginx找到需要PHP处理的文件时,就不需要转换目录了,因为它们是相同目录。这里,需要修改Nginx配置下的php.conf:

不同版本下的php.conf可能有所不同,重要的是fastcgi_pass这一句。在启动Docker的时候已经将php-fpm关联到php-fpm这个主机上,php-fpm的默认端口是9000,所以这里写php-fpm:9000就可以了。

其他部分就和普通的Nginx配置相同了,这里就不再赘述。

总结

将网站服务器迁移到Docker上是个比较容易的事情,比我想像中要少花了时间,虽然这个过程中Docker还挂了一次,导致我重新开虚拟机,重新做了一些事情,这个过程也很快,不到一小时就恢复了。这篇文章中只讲了大概的做法,有一些细节和更复杂的事情,我会再写下一篇文章的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据