千家信息网

docker部署LNMP和phpMyAdmin的过程

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,本篇内容主要讲解"docker部署LNMP和phpMyAdmin的过程",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"docker部署LNMP和phpMyA
千家信息网最后更新 2025年01月23日docker部署LNMP和phpMyAdmin的过程

本篇内容主要讲解"docker部署LNMP和phpMyAdmin的过程",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"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  [root@sqm-docker01 ~]# docker pull 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 "

hello welcome to nginx web

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

(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-fpmRUN 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 .

  • 参数解释:

  • build:进行构建

  • -t :指定标签

  • . 表示当前目录下的Dockerfile

构建完成后,将原有的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和phpMyAdmin的过程"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

容器 配置 文件 目录 运行 数据 网页 拷贝 地址 宿主 数据库 镜像 宿主机 服务 测试 密码 模块 端口 管理 过程 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 iss服务器管理器的作用 数据库查询条数语句 济南售德网络技术有限公司 山东卡圣网络技术有限公司 模拟城市自建服务器 在某次针对数据库的 国家支持的软件开发培训机构 剑网三角色分离不能选择服务器 华为服务器r680g7 工作App服务器登不上 在培训机构学软件开发靠谱吗 mongodb修改数据库 预备党员网络安全 数据库中除运算的用法 深圳四季云互联网科技有限公司 100万服务器要多大配置 写软件开发文档需要的材料 基因组数据库高中生物 中国服务器放在哪里好 四核八线程够软件开发么 计算机网络技术学的是什么东西 盘石网络技术有限公司招聘 山东浪潮服务器代理商电话多少 数据库表格分类汇总 网络安全运营工程师有什么用 信息网络安全战略大数据 威纶触摸屏数据库的建立 中国专利在线数据库 4.19切实维护网络安全 软件开发net方向出来干什么
0