• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    docker部署LNMP&phpMyAdmin的方法步骤

    环境准备:

    在一台主机上部署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的配置文件:

    参数解释:

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

    网站主目录:/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

    参数解释:

    (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挂载时,如果容器中没有该目录,将会自动创建)。

    (7)配置nginx和php-fpm:

    我们要对php解析nginx进行一个配置:

    创建一个简单的测试网页:

    接下来需要修改nginx配置文件:

    [root@sqm-docker01 html]# vim /docker/nginx/conf.d/default.conf


    (8)配置mysql:

    搭建phpMyadmin:

    phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量数据的导入及导出更为方便。其中一个更大的优势在于由于phpMyAdmin跟其他PHP程序一样在网页服务器上运行,但是您可以在任何地方使用这些程序产生的HTML页面,也就是于远程管理MySQL数据库,方便的创建、修改、删除数据库及数据表.
    [root@sqm-docker01 html]# pwd
    /wwwroot/html

    解压到当前目录:

    [root@sqm-docker01 html]# unzip phpMyAdmin-4.9.1-all-languages.zip

    重命名:

    [root@sqm-docker01 html]# mv phpMyAdmin-4.9.1-all-languages phpmyadmin

    修改nginx配置文件--配置与phpMyAdmin连接:

    [root@sqm-docker01 html]# vim /docker/nginx/conf.d/default.conf

    将原先的location配置项进行拷贝,再添加以下两个location配置段。

    修改完nginx配置文件,重启nginx:

    访问测试网页:

    已经将容器中的端口映射到了宿主机上,所以直接访问宿主机地址:172.16.1.30

    访问php解析nginx网页:

    接下来测试登陆 phpMyAdmin:

    访问url:http://172.16.1.30/phpmyadmin/index.php

    缺少mysqli模块,所以无法访问,所以需要添加php支持mysql配置模块:

    怎样针对容器进行添加扩展模块,我们可以登陆dockerhub进行查询相关文档:

    链接路径:https://hub.docker.com/


    复制以上dockerfile脚本,到本地进行安装:

    注意还需添加部分内容:

    [root@sqm-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-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    
      && docker-php-ext-install -j$(nproc) gd \
    
        && docker-php-ext-install mysqli pdo pdo_mysql

    进行构建dockerfile:

    [root@sqm-docker01 ~]# docker build -t phpfpm-mysqli .
    

    参数解释:

    构建完成后,将原有的php镜像删除,运行刚刚过构建成功的支持mysqli模块的镜像:

    [root@sqm-docker01 ~]# docker stop phpfpm 
    phpfpm
    [root@sqm-docker01 ~]# docker rm phpfpm 
    phpfpm
    [root@sqm-docker01 ~]# docker run --name phpfpm -d -p 9000:9000 -v /wwwroot/html:/usr/share/nginx/html --network 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搭建完成。

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

    上一篇:Centos下升级Python及Mongodb驱动安装问题
    下一篇:Nginx配置基于多域名、端口、IP的虚拟主机
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    docker部署LNMP&phpMyAdmin的方法步骤 docker,部署,LNMP,amp,phpMyAdmin,