拉取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命令可以测试
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环境就结束了。