小知识:docker部署LNMP架构的方法

环境要求:

IP  hostname 192.168.1.1 node1

项目规划:

容器网段:172.16.10.0/24

NGINX:172.16.10.10

MySQL:172.16.10.20

PHP:172.16.10.20

网站根目录:/www

nginx配置文件:/conf

mysql持久化目录:/var/lib/mysql

提前准备服务配置文件:

nginx

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<strong>docker run -itd –name test nginx      
#运行test容器 
docker cp test:/etc/nginx /conf      
#copy主配置文件
ls /conf/
conf.d     koi-win   nginx.conf  win-utf
fastcgi_params mime.types scgi_params
koi-utf     modules   uwsgi_params
docker cp test:/usr/share/nginx/html /www 
#copy网站目录
ls /www/
50x.html
index.html    
</strong>

mysql

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<strong>[root@node1 ~]# docker rm -f test
test
[root@node1 ~]# docker run -itd –name test -e MYSQL_ROOT_PASSWORD=pwd123 mysql:5.7
6b8d73ecd541d454f121302963a85d53131286d3118a968525a24ad2315b047b
[root@node1 ~]# docker exec -it test sh
# 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
Bye
# exit
[root@node1 ~]# docker cp test:/var/lib/mysql /var/lib/mysql
</strong>

1、配置lnmp虚拟网卡,网段172.16.10.0/24,网关172.16.10.254

?
1
2
<strong>docker network create -d bridge –subnet 172.16.10.0/24 –gateway 172.16.10.254 lnmp
</strong>

 2、创建nginx容器测试访问 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<strong>#创建mysql挂载数据目录、开发端口、指定IP
[root@node1 ~]# docker run -itd –name mysql -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql –network lnmp –ip 172.16.10.20 mysql:5.7
448227483a9c3141c2155d2c7b027aec263bfcfe4ebc49371b6817c17565ff81
#查看运行状态
[root@node1 ~]# docker ps
CONTAINER ID  IMAGE     COMMAND         CREATED     STATUS     PORTS                NAMES
448227483a9c  mysql:5.7   “docker-entrypoint.s…”  10 seconds ago  Up 9 seconds  0.0.0.0:3306->3306/tcp, 33060/tcp  mysql
4d1e99a06972  nginx:latest  “/docker-entrypoint.…”  3 minutes ago  Up 3 minutes  0.0.0.0:80->80/tcp         nginx
6b8d73ecd541  mysql:5.7   “docker-entrypoint.s…”  9 minutes ago  Up 9 minutes  3306/tcp, 33060/tcp         test
#测试登录
[root@node1 ~]# yum -y install mariadb
[root@node1 ~]# mysql -uroot -ppwd123 -h127.0.0.1
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.33 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type help; or \h for help. Type \c to clear the current input statement.
MySQL [(none)]> Bye
</strong>

 3、运行MySQL容器 

?
1
2
3
4
5
<strong>[root@node1 www]# docker run -itd –name php-fpm -p 9000:9000 -v /www:/usr/share/nginx/html –network lnmp –ip 172.16.10.30 php:7.2-fpm
ae09213d7c8c84299b1522ca474fccf7f26e27973cd02563891c37d51799b766
[root@node1 www]# docker ps
CONTAINER ID  IMAGE     COMMAND         CREATED     STATUS     PORTS                NAMES
ae09213d7c8c  php:7.2-fpm  “docker-php-entrypoi…”  7 seconds ago  Up 6 seconds  0.0.0.0:9000->9000/tcp       php-fpm</strong>

 4、创建php-fpm容器

?
1
2
<strong>[root@node1 ~]# vim /conf/conf.d/default.conf
</strong>

 5、nginx和PHP的连接 

%小知识:docker部署LNMP架构的方法-猿站网-插图

%小知识:docker部署LNMP架构的方法-1猿站网-插图

5.1、添加nginx静态的测试界面

?
1
2
3
4
5
6
<strong>[root@node1 ~]# echo Hello LNMP! > /www/index.html
[root@node1 ~]# cat /www/index.html
Hello LNMP!
[root@node1 ~]# curl 192.168.1.1
Hello LNMP!
</strong>

5.2、添加PHP测试页面 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<strong>[root@node1 ~]# cd /www
[root@node1 www]# vim test.php
[root@node1 www]# cat test.php
<?php
phpinfo();
?>
[root@node1 www]# docker restart nginx
nginx
[root@node1 www]# pwd
/www
[root@node1 www]# ls
50x.html index.html test.php
</strong>

%小知识:docker部署LNMP架构的方法-2猿站网-插图

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

6、测试PHP容器与Mysql容器的协调性、工具phpMyadmin

?
1
2
3
4
5
[root@node1 www]# pwd
/www
[root@node1 www]# unzip phpMyAdmin-4.9.0.1-all-languages.zip
[root@node1 www]# mv phpMyAdmin-4.9.0.1-all-languages phpMyAdmin
[root@node1 www]# rm -rf phpMyAdmin  

6.1、更新nginx配置文件 

?
1
2
[root@node1 www]# cd /conf/conf.d/
[root@node1 conf.d]# vim default.conf

 %小知识:docker部署LNMP架构的方法-3猿站网-插图

内容如下:

?
1
2
3
4
5
6
7
8
9
10
11
location /phpmyadmin {
root  /usr/share/nginx/html;
index index.php index.html index.htm;
}
location ~ /phpmyadmin/(?<after_ali>(.*)\.(php|php5)?$) {
root      /usr/share/nginx/html;
fastcgi_pass  172.16.10.30:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include    fastcgi_params;
}  

测试访问:

%小知识:docker部署LNMP架构的方法-4猿站网-插图

其实这主要是php镜像不支持连接mysql,我们要重新写一个。

7、解决php不关联mysql

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@node1 /]# cd /file/
[root@node1 file]# ls
Dockerfile
[root@node1 file]# cat 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@node1 file]# docker build -t php_mysql .
?
1
2
3
4
5
6
7
8
9
#删除php容器
[root@node1 /]# docker rm php-fpm -f
php-fpm
#运行phpmysql容器
[root@node1 /]# docker run -itd –name phpfpm -p 9000:9000 -v /www:/usr/share/nginx/html –network lnmp –ip 172.16.10.30 phpmysql:latest
c4e943880fd51f947cba64ba0006abd26a923439a3e39a0350ca2561b42b8026
[root@node1 /]# docker ps
CONTAINER ID  IMAGE       COMMAND         CREATED     STATUS     PORTS                NAMES
c4e943880fd5  phpmysql:latest  “docker-php-entrypoi…”  14 seconds ago  Up 13 seconds  0.0.0.0:9000->9000/tcp       phpfpm

7.1、phpmysql配置指向mysql地址

?
1
2
3
4
5
[root@node1 www]# cd /www/phpmyadmin/
[root@node1 phpmyadmin]# mv config.sample.inc.php config.inc.php
[root@node1 phpmyadmin]# vim config.inc.php
[root@node1 phpmyadmin]# docker restart phpfpm
phpfpm

8、访问测试  

%小知识:docker部署LNMP架构的方法-5猿站网-插图

%小知识:docker部署LNMP架构的方法-5猿站网-插图

%小知识:docker部署LNMP架构的方法-6猿站网-插图

9、趁热打铁,在发布一个dz论坛

dz论坛链接地址:http://www.tuohang.net/yuanma/155004.html

?
1
2
3
4
5
6
#上传
[root@node1 /]# ls
bin    Discuz_X3.4_SC_UTF8_20210119.zip
#移动到/www网页目录下
mv upload/ /www/dz
chmod 777 /www/dz<br>#保证数据库有dz库<br>#授权一个dz库的管理员<br>#注意安装是IP为数据库的IP不要写错<br>

%小知识:docker部署LNMP架构的方法-7猿站网-插图

  %小知识:docker部署LNMP架构的方法-8猿站网-插图

到此这篇关于docker部署LNMP架构的方法的文章就介绍到这了,更多相关docker部署LNMP架构内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/lin-strive/p/14409080.html

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:Docker初级网络端口映射的配置

2023-3-24 15:13:20

建站知识

小知识:Docker的镜像制作与整套项目一键打包部署的实现

2023-3-24 15:35:44

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索