docker部署LNMP&phpMyAdmin的方法步骤

论坛 期权论坛 脚本     
niminba   2021-5-23 04:58   1898   0

环境准备:

在一台主机上部署lnmp,基于多个容器:
nginx服务:172.16.10.10
mysql服务:172.16.10.20
php服务:172.16.10.30

解决容器固定ip地址问题:

注意:因为当容器停止时或者将容器删除,再次运行相同的容器,它的ip地址不再时原来的地址,所以我们需要自定义一个网段,来指定容器的ip地址。

项目操作:

(1) 首先自定义一个网络:

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

(2)下载nginx,php:fpm,mysql-5.7镜像:

[root@sqm-docker01 ~]# docker pull nginx 
[root@sqm-docker01 ~]# docker pull php:7.2-fpm <!--使用的是php:7.2-fpm的镜像-->
[root@sqm-docker01 ~]# docker pull mysql:5.7  <!--使用的是mysql:5.7的镜像-->

(3)####运行一个基于nginx镜像的容器#####

#先将nginx服务运行,以拷贝出nginx的配置文件:

参数解释:

  • run :创建一个新的容器
  • -d:后台运行
  • --name:自定义名称为test1

在宿主机创建需要挂载文件的目录:

网站主目录:/wwwroot;

nginx的配置文件:/docker;

[root@sqm-docker01 ~]# mkdir /wwwroot
[root@sqm-docker01 ~]# mkdir /docker

##使用docker cp命令将nginx存放配置文件的目录拷贝到本机,

注意:docker cp命令可以将宿主机上的文件拷贝到容器中,也可以反向拷贝,将容器中的文件或目录拷贝到本机

[root@sqm-docker01 ~]# docker cp test1:/etc/nginx /docker/ #使用docker cp将nginx存放配置文件的目录拷贝到宿主机

[root@sqm-docker01 ~]# ls /docker/nginx/conf.d/ 

default.conf  

#注意:需要修改的是nginx conf.d目录下的default.conf文件,而不是nginx.conf 文件。

拷贝nginx网页目录:

[root@sqm-docker01 ~]# docker cp test1:/usr/share/nginx/html /wwwroot/
[root@sqm-docker01 ~]# ls /wwwroot/html/
50x.html index.html

修改nginx默认的测试网页:

[root@sqm-docker01 html]# echo "<h1>hello welcome to nginx web</h1>" > index.html


(4)运行nginx容器:

分别将容器中目录挂载到本地目录,并且指定ip地址

[root@sqm-docker01 ~]# docker run -itd --name nginx --network my_net1 --ip 172.16.10.10 -p 80:80 -v /docker/nginx:/etc/nginx -v /wwwroot/html:/usr/share/nginx/html nginx:latest

参数解释:

  • run:运行一个容器
  • -itd: i:可交互
  • t:伪终端
  • d:保持容器后台运行
  • --network :基于哪张网卡创建网络
  • --ip: 定义容器的ip地址
  • -v = --volume 数据卷,进行一个挂载
  • 挂载格式: 宿主机:容器内
  • p:映射端口,宿主机端口:容器内端口

(5)运行mysql容器:

[root@sqm-docker01 ~]# docker run --name mysql -e MYSQL_ROOT_PASSWORD=123.com -d -p 3306:3306 --network my_net1 --ip 172.16.10.20 mysql:5.7
-e就是设置容器里的环境变量,我们设置了mysql的密码环境变量,这个变量会传入容器里面来设置mysql的密码

在本机测试root用户是否能够登录mysql:

首先需要下载mysql客户端:

[root@sqm-docker01 ~]# yum -y install mysql

(6)运行php容器:

[root@sqm-docker01 ~]# docker run -itd -p 9000:9000 --name phpfpm -v /wwwroot/html:/usr/share/nginx/html --network my_net1 --ip 172.16.10.30 php:7.2-fpm

注意:
保证nginx和php共享一个存放网页的目录,php创建和nginx相同的默认网页根目录(-v挂载时,如果容器中没有该目录,将会自动创建)。<7ork my_net1 --ip 172.16.10.30 phpfpm-mysqli:latest #镜像指定刚刚构建dockerfile生成的镜像名。

修改 phpMyAdmin默认的sample(样例文件):

想要配置文件将其使用,必须进行重命名,将sample去掉。

[root@sqm-docker01 phpmyadmin]# pwd
/wwwroot/html/phpmyadmin
[root@sqm-docker01 phpmyadmin]# cp config.sample.inc.php config.inc.php

对配置文件进行修改:

[root@sqm-docker01 phpmyadmin]# vim config.inc.php

修改完配置文件重启php:

[root@sqm-docker01 phpmyadmin]# docker restart phpfpm 
phpfpm

访问phpMyAdmin网页:

输入url:http://172.16.1.30/phpmyadmin/index.php

#用户名和密码,是数据库的登陆密码

成功访问到mysql数据库。。。。。。

至此在docker中多容器之间部署lnmp搭建完成。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持社区。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP