LNMP和LAMP是PHP常用的两种运行环境,L代表Linux,N代表Nginx,A代表Apache,M代表Mysql,P代表PHP。在文章《「PHP编程」安装开发环境太烦?告诉你几个简单方法,分分钟搞定》中我们介绍了,可以使用公共的 Docker 镜像来安装PHP运行环境,但是公共的 Docker 镜像不一定满足所有场景,如果需要自定义怎么办?
下面以LNMP为例来进行介绍如何制作自己的 Docker 镜像。
1、安装Docker环境
根据操作系统的不同,Docker 环境的安装有不同的差异。使用 Windows 的同学可以使用 Docker Desktop,或者 Docker Toolbox,而使用 Linux 的同学可以使用源码安装,或者借助第三方的自动化命令。如下:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
curl -sSL https://get.daocloud.io/docker | sh
2、下载镜像
LNMP的制作要基于Linux,因此我们需要先下载Linux镜像,然后再以Linux镜像为基础安装MySQL、Nginx、PHP。下载Linux镜像,可以使用如下命令:
docker install centos
以上命令会默认安装最新版本的centos。
3、创建容器
当有了 Linux 镜像后,我们就可以以 Linux 镜像为基础创建 Linux 容器了。如下:
docker run -itd --name centos-lnmp centos /bin/bash
4、制作镜像
Linux容器创建好后,我们进入容器,然后安装nginx、mysql、php,如下:
docker exec -it 容器id /bin/bash
这里为了简单,nginx、mysql、php的安装,可以使用lnmp一键安装包。安装地址:https://lnmp.org/notice/lnmp-v1-7.html,lnmp一键安装包解决了基本的依赖问题。
需要注意的是,为了后面使用lnmp镜像创建容器后,lnmp环境就能正常运行,我们需要将如下命令加入到自动启动机制中:
lnmp start
5、提交到仓库
待上面步骤完成后,使用 exit 命令推出容器,然后使用如下命令将容器提交为镜像
docker commit -m "备注" 容器id
至此,LNMP 镜像就制作好了,此时,你就可以使用此镜像创建 LNMP 容器,运行 PHP 程序了。如下:
docker run -itd --name=my-lnmp -p 80:80 -p 3306:3306 -v 宿主机文件目录:LNMP镜像 -v 宿主机虚拟主键配置文件:/etc/nginx/conf.d lnmp镜像
需要说明一下,上面的/usr/share/nginx/html路径和/etc/nginx/conf.d路径应以容器内部实际目录为准。唯一的原则是将一些需要经常变动的目录都映射到宿主机目录,这样方便后期动态调整。