docker部署LNMP&phpMyAdmin的方法步骤
环境准备:
在一台主机上部署lnmp,基于多个容器:
nginx服务:172.16.10.10
mysql服务:172.16.10.20
php服务:172.16.10.30
解决容器固定ip地址问题:
注意:因为当容器停止时或者将容器删除,再次运行相同的容器,它的ip地址不再时原来的地址,所以我们需要自定义一个网段,来指定容器的ip地址。
项目操作:
(1)首先自定义一个网络:
[root@sqm-docker01~]#dockernetworkcreate-dbridge--subnet172.16.10.0/24--gateway172.16.10.1mynet1
(2)下载nginx,php:fpm,mysql-5.7镜像:
[root@sqm-docker01~]#dockerpullnginx [root@sqm-docker01~]#dockerpullphp:7.2-fpm [root@sqm-docker01~]#dockerpullmysql:5.7
(3)####运行一个基于nginx镜像的容器#####
#先将nginx服务运行,以拷贝出nginx的配置文件:
参数解释:
- run:创建一个新的容器
- -d:后台运行
- --name:自定义名称为test1
在宿主机创建需要挂载文件的目录:
网站主目录:/wwwroot;
nginx的配置文件:/docker;
[root@sqm-docker01~]#mkdir/wwwroot [root@sqm-docker01~]#mkdir/docker
##使用dockercp命令将nginx存放配置文件的目录拷贝到本机,
[root@sqm-docker01~]#dockercptest1:/etc/nginx/docker/#使用dockercp将nginx存放配置文件的目录拷贝到宿主机。
[root@sqm-docker01~]#ls/docker/nginx/conf.d/ default.conf
#注意:需要修改的是nginxconf.d目录下的default.conf文件,而不是nginx.conf文件。
拷贝nginx网页目录:
[root@sqm-docker01~]#dockercptest1:/usr/share/nginx/html/wwwroot/ [root@sqm-docker01~]#ls/wwwroot/html/ 50x.htmlindex.html
修改nginx默认的测试网页:
[root@sqm-docker01html]#echo"hellowelcometonginxweb
">index.html
(4)运行nginx容器:
分别将容器中目录挂载到本地目录,并且指定ip地址
[root@sqm-docker01~]#dockerrun-itd--namenginx--networkmy_net1--ip172.16.10.10-p80:80-v/docker/nginx:/etc/nginx-v/wwwroot/html:/usr/share/nginx/htmlnginx:latest
参数解释:
- run:运行一个容器
- -itd:i:可交互
- t:伪终端
- d:保持容器后台运行
- --network:基于哪张网卡创建网络
- --ip:定义容器的ip地址
- -v=--volume数据卷,进行一个挂载
- 挂载格式:宿主机:容器内
- p:映射端口,宿主机端口:容器内端口
(5)运行mysql容器:
[root@sqm-docker01~]#dockerrun--namemysql-eMYSQL_ROOT_PASSWORD=123.com-d-p3306:3306--networkmy_net1--ip172.16.10.20mysql:5.7
-e就是设置容器里的环境变量,我们设置了mysql的密码环境变量,这个变量会传入容器里面来设置mysql的密码
在本机测试root用户是否能够登录mysql:
首先需要下载mysql客户端:
[root@sqm-docker01~]#yum-yinstallmysql
(6)运行php容器:
[root@sqm-docker01~]#dockerrun-itd-p9000:9000--namephpfpm-v/wwwroot/html:/usr/share/nginx/html--networkmy_net1--ip172.16.10.30php:7.2-fpm
注意:
保证nginx和php共享一个存放网页的目录,php创建和nginx相同的默认网页根目录(-v挂载时,如果容器中没有该目录,将会自动创建)。
(7)配置nginx和php-fpm:
我们要对php解析nginx进行一个配置:
创建一个简单的测试网页:
接下来需要修改nginx配置文件:
[root@sqm-docker01html]#vim/docker/nginx/conf.d/default.conf
(8)配置mysql:
搭建phpMyadmin:
phpMyAdmin是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量数据的导入及导出更为方便。其中一个更大的优势在于由于phpMyAdmin跟其他PHP程序一样在网页服务器上运行,但是您可以在任何地方使用这些程序产生的HTML页面,也就是于远程管理MySQL数据库,方便的创建、修改、删除数据库及数据表.
[root@sqm-docker01html]#pwd /wwwroot/html
解压到当前目录:
[root@sqm-docker01html]#unzipphpMyAdmin-4.9.1-all-languages.zip
重命名:
[root@sqm-docker01html]#mvphpMyAdmin-4.9.1-all-languagesphpmyadmin
修改nginx配置文件--配置与phpMyAdmin连接:
[root@sqm-docker01html]#vim/docker/nginx/conf.d/default.conf
将原先的location配置项进行拷贝,再添加以下两个location配置段。
修改完nginx配置文件,重启nginx:
访问测试网页:
已经将容器中的端口映射到了宿主机上,所以直接访问宿主机地址:172.16.1.30
访问php解析nginx网页:
接下来测试登陆phpMyAdmin:
访问url:http://172.16.1.30/phpmyadmin/index.php
缺少mysqli模块,所以无法访问,所以需要添加php支持mysql配置模块:
怎样针对容器进行添加扩展模块,我们可以登陆dockerhub进行查询相关文档:
链接路径:https://hub.docker.com/
复制以上dockerfile脚本,到本地进行安装:
注意还需添加部分内容:
[root@sqm-docker01~]#vimDockerfile
FROMphp:7.2-fpm RUNapt-getupdate&&apt-getinstall-y\ libfreetype6-dev\ libjpeg62-turbo-dev\ libpng-dev\ &&docker-php-ext-install-j$(nproc)iconv\ &&docker-php-ext-configuregd--with-freetype-dir=/usr/include/--with-jpeg-dir=/usr/include/\ &&docker-php-ext-install-j$(nproc)gd\ &&docker-php-ext-installmysqlipdopdo_mysql
进行构建dockerfile:
[root@sqm-docker01~]#dockerbuild-tphpfpm-mysqli.
参数解释:
- build:进行构建
- -t:指定标签
- .表示当前目录下的Dockerfile
构建完成后,将原有的php镜像删除,运行刚刚过构建成功的支持mysqli模块的镜像:
[root@sqm-docker01~]#dockerstopphpfpm phpfpm [root@sqm-docker01~]#dockerrmphpfpm phpfpm
[root@sqm-docker01~]#dockerrun--namephpfpm-d-p9000:9000-v/wwwroot/html:/usr/share/nginx/html--networkmy_net1--ip172.16.10.30phpfpm-mysqli:latest #镜像指定刚刚构建dockerfile生成的镜像名。
修改phpMyAdmin默认的sample(样例文件):
想要配置文件将其使用,必须进行重命名,将sample去掉。
[root@sqm-docker01phpmyadmin]#pwd /wwwroot/html/phpmyadmin [root@sqm-docker01phpmyadmin]#cpconfig.sample.inc.phpconfig.inc.php
对配置文件进行修改:
[root@sqm-docker01phpmyadmin]#vimconfig.inc.php
修改完配置文件重启php:
[root@sqm-docker01phpmyadmin]#dockerrestartphpfpm phpfpm
访问phpMyAdmin网页:
输入url:http://172.16.1.30/phpmyadmin/index.php
#用户名和密码,是数据库的登陆密码
成功访问到mysql数据库。。。。。。
至此在docker中多容器之间部署lnmp搭建完成。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。