java零基础 ScrollView springcloud 树莓派USB dedecms algorithm authentication audio safari tree Zeptojs GMU HammerJS 后台网站模板 bootstrap后台模版 pmp教程 abaqus是什么软件 mysql转字符串 oracle查询数据库 js基本数据类型有哪些 docker启动命令 python安装教程 python指令 java9 java文件流 如何安装java环境 java接口开发 魔之符咒 销售单打印软件 主板排名天梯图 vbs表白代码 程序员面试宝典 不屑表情包 ps调整边缘抠头发丝 子节点 软件龙头股 python列表求和 男网红头像 大数据之路 海蜘蛛软路由
当前位置: 首页 > 学习教程  > 编程语言

Docker——9——Docker部署LNMP环境——代发

2020/10/8 18:33:57 文章标签:

环境 docker01192.168.1.128 部署LNMP 网络规划: 网段:172.16.10.0/24 Nginx:172.16.10.10 Mysql:172.16.10.20 Php:172.16.10.30 网站的访问主目录(host):/wwwroot Nginx的配置文件…

环境

docker01192.168.1.128

部署LNMP

网络规划:

网段:172.16.10.0/24
Nginx:172.16.10.10
Mysql:172.16.10.20
Php:172.16.10.30
网站的访问主目录(host):/wwwroot
Nginx的配置文件(host):/docker
MySQL持久化的目录(host):/var/lib/mysql

前提准备

拷贝所需文件到本地目录,mysql创建test数据库,用做验证

[root@docker01 ~]# mkdir /wwwroot
[root@docker01 ~]# mkdir /docker
[root@docker01 ~]# docker run -itd --name test nginx			#获取nginx配置文件
[root@docker01 ~]# docker cp test:/etc/nginx /docker
[root@docker01 ~]# ls /docker/
nginx
[root@docker01 ~]# docker cp test:/usr/share/nginx/html /wwwroot/
[root@docker01 ~]# ls /wwwroot/
html
[root@docker01 ~]# docker rm -f test 
test

[root@docker01 ~]# docker pull mysql:5.7			#获取mysql配置文件
[root@docker01 ~]# docker run -itd --name test -e MYSQL_ROOT_PASSWORD=pwd123 mysql:5.7 
[root@docker01 ~]# docker exec -it test bash
root@01ef351e6f11:/# mysql -uroot -ppwd123 -h127.0.0.1
mysql> create database test;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.00 sec)
mysql> exit
root@01ef351e6f11:/# exit
[root@docker01 ~]# docker cp test:/var/lib/mysql /
[root@docker01 ~]# ls /mysql/
auto.cnf    ca.pem           client-key.pem  ibdata1      ib_logfile1  mysql               private_key.pem  server-cert.pem  sys
ca-key.pem  client-cert.pem  ib_buffer_pool  ib_logfile0  ibtmp1       performance_schema  public_key.pem   server-key.pem   test
[root@docker01 ~]# docker rm -f test 
test

1、创建一个自定义网络

[root@docker01 ~]# docker network create -d bridge --subnet 172.16.10.0/24 --gateway 172.16.10.1 lnmp

2、运行nginx容器

[root@docker01 ~]# docker run -itd --name nginx -p 80:80 -v /wwwroot/html:/usr/share/nginx/html -v /docker/nginx:/etc/nginx --network lnmp --ip 172.16.10.10 nginx
[root@docker01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
96f36bcee11b        nginx               "/docker-entrypoint.…"   3 seconds ago       Up 2 seconds        0.0.0.0:80->80/tcp   nginx
[root@docker01 ~]# echo 123456 > /wwwroot/html/index.html 
[root@docker01 ~]# curl 127.0.0.1
123456

3、运行mysql容器

[root@docker01 ~]# docker run -itd --name mysql -p 3306:3306 -v /mysql:/var/lib/mysql --network lnmp --ip 172.16.10.20 mysql:5.7
[root@docker01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
48bf66ed33e4        mysql:5.7           "docker-entrypoint.s…"   51 seconds ago      Up 51 seconds       0.0.0.0:3306->3306/tcp, 33060/tcp   mysql
96f36bcee11b        nginx               "/docker-entrypoint.…"   13 minutes ago      Up 13 minutes       0.0.0.0:80->80/tcp                  nginx
[root@docker01 ~]# ss -lnt
LISTEN     0      128                  :::3306                       :::*
[root@docker01 ~]# yum -y install mariadb
[root@docker01 ~]# mysql -uroot -ppwd123 -h127.0.0.1
MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.00 sec)
MySQL [(none)]> Bye

4、运行php容器

[root@docker01 ~]# 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
[root@docker01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
7f15c778bd42        php:7.2-fpm         "docker-php-entrypoi…"   16 seconds ago      Up 15 seconds       0.0.0.0:9000->9000/tcp              phpfpm
48bf66ed33e4        mysql:5.7           "docker-entrypoint.s…"   10 minutes ago      Up 10 minutes       0.0.0.0:3306->3306/tcp, 33060/tcp   mysql
96f36bcee11b        nginx               "/docker-entrypoint.…"   23 minutes ago      Up 23 minutes       0.0.0.0:80->80/tcp                  nginx

5、nginx和php连接

[root@docker01 ~]# vim /docker/nginx/conf.d/default.conf
  9     location / {
 10         root   /usr/share/nginx/html;
 11         index  index.html index.htm index.php;			#添加PHP解析
 12     }
 
 ……

修改:
 31     location ~ \.php$ {					#开启fastcgi配置
 32         root           /usr/share/nginx/html;
 33         fastcgi_pass   172.16.10.30:9000;
 34         fastcgi_index  index.php;
 35         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
 36         include        fastcgi_params;
 37     }

修改nginx静态的测试界面

[root@docker01 ~]# vim /wwwroot/html/index.html
<h1>Hello LNMP</h1>

添加php测试界面

[root@docker01 ~]# vim /wwwroot/html/index.php
<?php
phpinfo();
?>
[root@docker01 ~]# docker restart nginx			#重启nginx容器,使其重新识别nginx配置文件
nginx

浏览器验证,nginx服务和php服务的界面

PS:在用浏览器访问测试的时候,不要忽略了dockerhost的防火墙和 selinux
验证nginx服务80:
在这里插入图片描述
验证nginx和php的连接9000:
在这里插入图片描述

6、php和mysql的连接验证

能够访问到以上两个界面,说明nginx和php的连接,没有问题,接下来是 php 和 mysql 的连接。在这里使用一个phpMyAdmin的数据库管理工具

[root@docker01 html]# pwd
/wwwroot/html
[root@docker01 html]# rz			#复制phpMyAdmin-4.9.1-all-languages.zip到/wwwroot/html
[root@docker01 html]# ls
50x.html  index.html  index.php  phpMyAdmin-4.9.1-all-languages.zip
[root@docker01 html]# unzip phpMyAdmin-4.9.1-all-languages.zip
[root@docker01 html]# mv phpMyAdmin-4.9.1-all-languages phpmyadmin

修改phpmyadmin的配置文件,指定连接的数据库的IP

[root@docker01 ~]# cd /wwwroot/html/phpmyadmin/
[root@docker01 phpmyadmin]# cp config.sample.inc.php config.inc.php 
[root@docker01 phpmyadmin]# vim config.inc.php
 31 $cfg['Servers'][$i]['host'] = '172.16.10.20';			#修改为mysql的IP地址

更改nginx的配置文件,添加phpmyadmin的索引文件

[root@docker01 ~]# cd /docker/nginx/conf.d/
[root@docker01 conf.d]# vim default.conf
  9     location / {
 10         root   /usr/share/nginx/html;
 11         index  index.html index.htm index.php;
 12     }
 新添加phpmyadmin模块:
 13     location /phpmyadmin {
 14         root   /usr/share/nginx/html;
 15         index  index.html index.htm index.php;
 16     }

 ……

 35     location ~ \.php$ {
 36         root           /usr/share/nginx/html;
 37         fastcgi_pass   172.16.10.30:9000;
 38         fastcgi_index  index.php;
 39         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
 40         include        fastcgi_params;
 41     }
 42 
 添加:
 43     location ~ /phpmyadmin/(?<after_ali>(.*)\.(php|php5)?$) {
 44         root /usr/share/nginx/html;
 45         fastcgi_pass 172.16.10.30:9000;
 46         fastcgi_index index.php;
 47         fastcgi_param SCRIPT_FILENAME
 48         $document_root$fastcgi_script_name;
 49         include fastcgi_params;
 50     }

重启nginx容器,重新识别nginx配置文件

[root@docker01 conf.d]# docker restart nginx
nginx

浏览器访问phpmyadmin
在这里插入图片描述
PS:能够访问到此目录,说明php——mysql服务的连接时没问题的

需要对php镜像做出更改,添加php和mysql连接的模块写一个dockerfile

[root@docker01 ~]# vim Dockerfile
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-freetypedir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install mysqli pdo pdo_mysql

[root@docker01 ~]# docker build -t php_mysql .

删除之前的php容器,并用新制作的php镜像重新运行
[root@docker01 ~]# docker rm -f phpfpm
[root@docker01 ~]# docker run -itd --name phpfpm -p 9000:9000 -v /wwwroot/html:/usr/share/nginx/html --network lnmp --ip 172.16.10.30 php_mysql:latest

—————————————————————————————————或者下边的方法(时间都差不多长)—————————————————————————————————————

[root@docker01 ~]# docker exec -it phpfpm bash
root@7f15c778bd42:/var/www/html# 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-freetypedir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install mysqli pdo pdo_mysql

—————————————————————————————————本人使用已完成的镜像—————————————————————————————————————

[root@docker01 conf.d]# docker rm -f phpfpm
[root@docker01 ~]# rz			#复制phpmysql.tar到/root/
[root@docker01 ~]# ls
phpmysql.tar
[root@docker01 ~]# docker load < phpmysql.tar 
[root@docker01 ~]# docker run -itd --name phpfpm -p 9000:9000 -v /wwwroot/html:/usr/share/nginx/html --network lnmp --ip 172.16.10.30 php_mysql:latest 
[root@docker01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
84532a52e7a3        php_mysql:latest    "docker-php-entrypoi…"   5 seconds ago       Up 4 seconds        0.0.0.0:9000->9000/tcp              phpfpm
3175cca7ddbb        mysql:5.7           "docker-entrypoint.s…"   10 minutes ago      Up 10 minutes       0.0.0.0:3306->3306/tcp, 33060/tcp   mysql
1929056be434        nginx               "/docker-entrypoint.…"   14 minutes ago      Up 3 minutes        0.0.0.0:80->80/tcp                  nginx

验证:

在这里插入图片描述
登录成功之后,会看到之前创建的数据库
在这里插入图片描述


本文链接: http://www.dtmao.cc/news_show_250062.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?