Docker部署LNMP环境

一、用Link连接部署LNMP环境

拉取mysql镜像
[root@localhost ~]# docker pull mysql:5.7
[root@localhost ~]# docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name scx_mysql mysql:5.7
46842d76e007b989dc585718a371554777aaf19f2a97fe495ac4f7d8bfef2636
查看MySQL镜像是否启动
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
46842d76e007        mysql:5.7           "docker-entrypoint.s…"   8 seconds ago       Up 7 seconds        0.0.0.0:3306->3306/tcp, 33060/tcp   scx_mysql
拉取php镜像
[root@localhost ~]# docker pull php:7.2-fpm
[root@localhost ~]# docker run -d -v /var/nginx/www/html:/var/www/html -p 9000:9000 --link scx_mysql --name scx_phpfpm php:7.2-fpm
664b08f2fe502eebd43d9213caf3a739a6b4f2572014178514dd548bb9bb210d
查看php镜像是否启动成功
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                               NAMES
664b08f2fe50        php:7.2-fpm         "docker-php-entrypoi…"   4 seconds ago        Up 2 seconds        0.0.0.0:9000->9000/tcp              scx_phpfpm
46842d76e007        mysql:5.7           "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:3306->3306/tcp, 33060/tcp   scx_mysql
进入容器中创建test.php文件在主机的/var/nginx/www/html下也会有一个同样的文件。
[root@localhost ~]# docker exec -it scx_phpfpm /bin/bash
root@664b08f2fe50:/var/www/html# touch test.php
root@664b08f2fe50:/var/www/html# ls
test.php
root@664b08f2fe50:/var/www/html# exit
exit
[root@localhost ~]# ls /var/nginx/www/html
test.php
拉取nginx镜像
[root@localhost ~]# docker pull nginx:1.12.2
启动nginx容器
[root@localhost ~]# docker run -d -p 80:80 --name scx_nginx -v /var/nginx/www/html/:/var/www/html --link scx_phpfpm:phpfpm --name scx_nginx nginx:1.12.2
c06b786197597c9a1323387c6cbc617e9de4364f81435110890d1aae73c2ac05
查看nginx容器是否启动成功
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
c06b78619759        nginx:1.12.2        "nginx -g 'daemon of…"   4 seconds ago       Up 3 seconds        0.0.0.0:80->80/tcp                  scx_nginx
664b08f2fe50        php:7.2-fpm         "docker-php-entrypoi…"   4 minutes ago       Up 4 minutes        0.0.0.0:9000->9000/tcp              scx_phpfpm
46842d76e007        mysql:5.7           "docker-entrypoint.s…"   5 minutes ago       Up 5 minutes        0.0.0.0:3306->3306/tcp, 33060/tcp   scx_mysql
进入nginx容器到/etc/nginx/conf.d/下修改配置文件
[root@localhost ~]# docker exec -it scx_nginx /bin/bash
root@c06b78619759:/# cd /etc/nginx/conf.d/
root@c06b78619759:/etc/nginx/conf.d# apt-get update
root@c06b78619759:/etc/nginx/conf.d# apt-get install vim
修改配置文件中的php模块。
root@c06b78619759:/etc/nginx/conf.d# vim default.conf 
location ~ \.php$ {
        root           /var/www/html;
        fastcgi_pass   phpfpm:9000;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME/var/www/html/$fastcgi_script_name;
        include        fastcgi_params;
    }
重新加载nginx    
root@c06b78619759:/etc/nginx/conf.d# nginx -s reload
root@c06b78619759:/etc/nginx/conf.d# exit
exit
在/var/nginx/www/html下创建
[root@localhost html]# vi index.php
<?
  phpinfo();
 ?> 

进行测试。
在这里插入图片描述
出现这个就表示搭建成功。
注意此次搭建是使用link连接的。
用ping命令可以测试
在这里插入图片描述
在这里插入图片描述

二、用network连接部署LNMP环境

1、网站访问主目录 :/wwwroot
2、Nginx的配置文件:/docker

创建文件夹
[root@localhost ~]# mkdir /wwwroot
[root@localhost ~]# mkdir /docker
[root@localhost /]# docker run -itd --name test nginx:1.12.2
65c1dc0119c10f7b60ba21098893102ca242e8329ab24ad41e32951c54e6633b
[root@localhost /]# docker cp test:/etc/nginx /docker
[root@localhost /]# docker cp test:/usr/share/nginx/html /wwwroot/
创建一个自定义的网络
[root@localhost ~]# docker network create -d bridge  --subnet 192.168.10.0/24 --gateway 192.168.10.1 lnmp
8d27364e03101c7d0f25f2f3175211ef6eba87e792755f63ad22e15a67511d72
启动nginx容器
[root@localhost ~]# docker run -itd --name nginx -v /docker/nginx/:/etc/nginx -v /wwwroot/html:/usr/share/nginx/html -p 80:80 --network lnmp --ip 192.168.10.10 nginx:1.12.2
ef9816dc2a53afe6535b7a37ccd9766fb58df14700679be5c030ef318c8d46de
启动mysql容器
[root@localhost ~]# docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d -p 3306:3306 --network lnmp --ip 192.168.10.20 mysql:5.7
847c2c9c1c6c087f03496334a6223e93a055844d3a7568e87655cb96d1497fb3
安装MySQL
[root@localhost ~]# yum -y install mysql
登录mysql数据库
[root@localhost ~]# mysql -u root -p123456 -h 127.0.0.1 -P 3306
MySQL [(none)]> create database name;//创建name库
MySQL [(none)]> show databases;查看name库是否创建成功若创建成功退出
MySQL [(none)]> exit
启动php容器
[root@localhost ~]# docker run -itd --name phpfpm -p 9000:9000 -v /wwwroot/html/:/usr/share/nginx/html --network lnmp --i.168.10.30 php 192.168.10.30 php:7.2-fpm
d55b43aabc2a0619e886b800a5a316b1d5a89352d9754bf19d82325c70174042
创建php测试页面
[root@localhost ~]# cd /wwwroot/html/
[root@localhost html]# cat test.php 
<?php
   phpinfo();
?>
修改nginx配置文件,nginx和php连接
[root@localhost ~]# cd /docker/nginx/conf.d/
[root@localhost conf.d]# cat default.conf 
打开此模块,并根据自己的要求更改内容
location ~ \.php$ {
        root           /usr/share/nginx/html;
        fastcgi_pass   192.168.10.30:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
重启nginx 
[root@localhost conf.d]# docker restart nginx   

测试:浏览器验证,nginx服务和PHP服务界面。
测试nginx界面 也可以自己写一个简单的php文件进行测试。
在这里插入图片描述测试PHP界面
在这里插入图片描述
到此说明nginx和php连接是没有问题的。

对php和mysql进行连接。这里要借助phpMyAdmin的数据库管理工具。
下载phpMyAdmin安装包并解压
[root@localhost ~]# cd /wwwroot/html/
[root@localhost html]#wget https://files.phpmyadmin.net/phpMyAdmin/4.9.1/phpMyAdmin-4.9.1-all-languages.zip
[root@localhost html]#unzip phpMyAdmin-4.9.1-all-languages.zip 
[root@localhost html]#mv phpMyAdmin-4.9.1-all-languages phpmyadmin
更改nginx配置文件
[root@localhost ~]cd /docker/nginx/conf.d
[root@localhost conf.d]# vim default.conf
第27行添加如下内容
location /phpmyadmin {
   root  /usr/share/nginx/html;
   index index.html index.htm index.php;
   }
第43行添加如下内容
location ~ /phpmyadmin/(?<after_ali>(.*)\.(php|php5)?$) {
   root           /usr/share/nginx/html;
   fastcgi_pass   192.168.10.30:9000;
   fastcgi_index  index.php;
   fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
   include        fastcgi_params;
   } 
重启nginx容器     
[root@localhost conf.d]# docker restart nginx
我们在这需要对php镜像做出修改,添加php和mysql连接的模块。
写一个dockerfile文件在/wwwroot/html下
FROM php:7.2-fpm
RUN apt-get update && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
    && docker-php-ext-install -j$(nproc) iconv \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd \
        && docker-php-ext-install mysqli pdo pdo_mysql
[root@localhost html]#docker build -t phpmysql .
停止php容器并删除
[root@localhost html]#docker stop  phpfpm 
[root@localhost html]#docker rm  phpfpm 
启动新的php容器
[root@localhost html]#docker run -itd --name phpfpm -p 9000:9000 -v /wwwroot/html/:/usr/share/nginx/html --network lnmp --ip 192.168.10.30 phpmysql:latest
修改phpmyadmin的配置文件,指定连接的数据库的IP,然后重启php容器
[root@localhost html]# cd /wwwroot/html/phpmyadmin/
[root@localhost phpmyadmin]#cp config.sample.inc.php config.inc.php
[root@localhost phpmyadmin]# vim config.inc.php
$cfg['Servers'][$i]['host'] = '192.168.10.20';
[root@localhost ~]# docker restart  phpfpm

在浏览器输入192.168.1.234/phpmyadmin/user_password.php
在这里插入图片描述
可以看到我们在前面的时候创建的name库可以看到
在这里插入图片描述
到此我们用Docker部署network连接搭建LNMP环境就结束了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值