大佬教程收集整理的这篇文章主要介绍了docker部署lnmp集群,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
LNMP的网段为:@H_944_1@172.16.10.0/24
服务容器与各个ip:@H_944_1@Nginx 172.16.10.10@H_944_1@mysqL 172.16.10.20@H_944_1@php 172.16.10.30**
导入一下镜像包:@H_944_1@mysqL5.7@H_944_1@php.7.2-fpm.tar@H_944_1@wordpress.tar@H_944_1@Nginx.tar
将导入的镜像包导成docker可用的镜像:@H_944_1@docker load < Nginx.tar && docker load < wordpress.tar && docker load < MysqL-5.7.tar && docker load < Nginx.tar && docker load < php.7.2-fpm.tar
宿主机创建两个目录:@H_944_1@分别是:@H_944_1@网站的访问主目录:mkdir /wwwroot@H_944_1@配置文件目录: mkdir /docker
Nginx准备工作:@H_944_1@Nginx配置文件:/etc/Nginx/conf.d@H_944_1@Nginx主目录:/usr/share/Nginx/html
先运行一个Nginx容器,将容器里的Nginx主目录和配置文件导出来:@H_944_1@docker run -itd --name test Nginx:latest
docker cp test:/etc/Nginx /docker
docker cp test:/usr/share/Nginx/html /wwwroot
查看80端口,不可被占用:@H_944_1@netstat -anpt | grep 80
准备工作已经完成,接下来开始部署各个服务:
1)创建一个自定义网络:@H_944_1@docker network create -d bridge --subnet 172.16.10.0/24 --gateway 172.16.10.1 lnmp
2)运行Nginx:@H_944_1@docker run -itd --name Nginx -v /docker/Nginx:/etc/Nginx -v /wwwroot/html:/usr/share/Nginx/html -p 80:80 --network lnmp --ip 172.16.10.10 Nginx
更改Nginx访问界面:@H_944_1@cd /wwwroot/html@H_944_1@cat index.html@H_944_1@Hello lnmp
访问本机验证:@H_944_1@curl 127.0.0.1@H_944_1@Hello lnmp
浏览器访问出下面就成功:
3)运行MysqL:@H_944_1@运行一个MysqL容器,并为它创建密码为123.com:@H_944_1@docker run --name MysqL -e MysqL_ROOT_password=123.com -d -p 3306:3306 --network lnmp --ip 172.16.10.20 MysqL:5.7
登录MysqL验证:@H_944_1@先下载一个MysqL@H_944_1@[root@localhost ~]# yum -y install MysqL
访问验证:@H_944_1@[root@localhost ~]# MysqL -u root -p123.com -h 127.0.0.1 -P 3306
随便新建一个库做验证:@H_944_1@mysqL [(nonE)]> create database name;
再查看有没有刚创建的库:@H_944_1@mysqL [(nonE)]> show databases;
4)运行php容器:
运行一个php容器@H_944_1@[root@localhost ~]# docker run -itd --name phpfpm -p 9000:9000 -v /wwwroot/html:/usr/share/Nginx/html --network lnmp --ip 172.16.10.30 php:7.2-fpm
添加php测试界面:@H_944_1@[root@localhost html]# pwd@H_944_1@/wwwroot/html@H_944_1@[root@localhost html]# vim test.php
<?php@H_944_1@phpinfo();@H_944_1@?>@H_944_1@浏览器访问:出现下面界面就成功
5)修改Nginx配置文件,Nginx和php连接@H_944_1@[root@localhost conf.d]# pwd@H_944_1@/docker/Nginx/conf.d
[root@localhost conf.d]# vim default.conf
10行:添加index.php解析
index index.html index.htm index.php;
30行:打开模块(去掉#并添加)并更改相信息:
LOCATIOn ~ .php$ {@H_944_1@root /usr/share/Nginx/html;@H_944_1@fastcgi_pass 172.16.10.30:9000;@H_944_1@fastcgi_index index.php;@H_944_1@fastcgi_param SCRIPT_FILename $document_root$fastcgi_script_name;@H_944_1@include fastcgi_params;@H_944_1@}
重启Nginx服务:
[root@localhost conf.d]# docker restart Nginx @H_944_1@Nginx
关闭防火墙:
[root@localhost conf.d]# systemctl stop firewalld@H_944_1@[root@localhost conf.d]# systemctl disable firewalld
重启docker:
[root@localhost conf.d]# systemctl daemon-reload @H_944_1@[root@localhost conf.d]# systemctl restart docker
重启所有容器:
[root@localhost conf.d]# docker ps -a -q | xargs docker start
下载导入phpR_939_11845@yAdmin-4.9.1-all-languages
导入需要的包:@H_944_1@[root@localhost html]# pwd@H_944_1@/wwwroot/html
[root@localhost html]# ls@H_944_1@50x.html phpR_939_11845@yAdmin-4.9.1-all-languages.zip@H_944_1@index.html test.php
解压:
[root@localhost html]# unzip phpR_939_11845@yAdmin-4.9.1-all-languages.zip
[root@localhost html]# ls@H_944_1@50x.html phpR_939_11845@yAdmin-4.9.1-all-languages test.php@H_944_1@index.html phpR_939_11845@yAdmin-4.9.1-all-languages.zip
名字太长不好记,待会要在Nginx配置文件更改,重命名一下:
[root@localhost html]# mv phpR_939_11845@yAdmin-4.9.1-all-languages phpR_939_11845@yadmin
[root@localhost html]# ls@H_944_1@50x.html phpR_939_11845@yadmin test.php@H_944_1@index.html phpR_939_11845@yAdmin-4.9.1-all-languages.zip
//更改Nginx配置文件:
[root@localhost html]# cd /docker/Nginx/conf.d/@H_944_1@[root@localhost conf.d]# vim default.conf
27行添加:
LOCATIOn /phpR_939_11845@yadmin {
root /usr/share/Nginx/html;
index index.html index.htm index.php; }
41行添加:
LOCATIOn ~ /phpR_939_11845@yadmin/(?<after_ali>(.*).(php|php5)?$) {@H_944_1@root /usr/share/Nginx/html;@H_944_1@fastcgi_pass 172.16.10.30:9000;@H_944_1@fastcgi_index index.php;@H_944_1@fastcgi_param SCRIPT_FILename $document_root$fastcgi_script_name; include fastcgi_params;@H_944_1@}
重启Nginx:
[root@localhost conf.d]# docker restart Nginx@H_944_1@Nginx
浏览器访问@H_944_1@本机IP/phpR_939_11845@yadmin/index.php
报红框属于正常现象,不要惊慌,接下来就解决它
需要我们对php镜像做出更改,添加php和MySQL连接的模块
写一个Dockerfile:@H_944_1@[root@localhost ~]# vim Dockerfile
FROM php:7.2-fpm@H_944_1@RUN apt-get update && apt-get install -y \@H_944_1@libfreetype6-dev \@H_944_1@libjpeg62-turbo-dev \@H_944_1@libpng-dev \@H_944_1@&& docker-php-ext-install -j$(nproC) iconv \@H_944_1@&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \@H_944_1@&& docker-php-ext-install -j$(nproC) gd \@H_944_1@&& docker-php-ext-install MysqLi pdo pdo_MysqL
执行一下:这条命令加载时间有点长,请耐心等待!!!
[root@localhost ~]# docker build -t phpR_939_11845@ysqL .
查看是否有新创建的镜像:
[root@localhost ~]# docker images
[root@localhost ~]# docker stop phpfpm
我的是这个:
phpR_939_11845@ysqL latest 6e65aee3bd4d 9 minutes ago 422MB
关闭原先的php镜像:
[root@localhost ~]# docker stop phpfpm @H_944_1@phpfpm
删除之前的php容器
[root@localhost ~]# docker rm phpfpm @H_944_1@phpfpm
[root@localhost ~]# docker run -itd --name phpfpm -p 9000:9000 -v /wwwroot/html:/usr/share/Nginx/html --network lnmp --ip 172.16.10.30 phpR_939_11845@ysqL
//修改phpR_939_11845@yadmin的配置文件,指定连接的数据库的ip
[root@localhost phpR_939_11845@yadmin]# pwd@H_944_1@/wwwroot/html/phpR_939_11845@yadmin
改名:
[root@localhost phpR_939_11845@yadmin]# cp config.sample.inc.php config.inc.php
编辑:
[root@localhost phpR_939_11845@yadmin]# vim config.inc.php
31行:改为MysqL数据库的ip
$cfg['Servers'][$i]['host'] = '172.16.10.20';
重启php容器:
[root@localhost phpR_939_11845@yadmin]# docker restart phpfpm @H_944_1@phpfpm
浏览器访问:本机IP/phpR_939_11845@yadmin/index.php @H_944_1@出现以下界面成功@H_944_1@
@H_944_1@用户:root 密码:123.com登录成功会看到之前创建的数据库:
到这就lnmp部署完成!!!!
以上是大佬教程为你收集整理的docker部署lnmp集群全部内容,希望文章能够帮你解决docker部署lnmp集群所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。