docker部署LNMP&phpMyAdmin的方法步骤(docker部署zabbix)

admin3年前云主机76

环境准备:

在一台主机上部署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 -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进行查询相关文档:

链接路径:http://hub.docker/


复制以上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搭建完成。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持站长源码网。《docker部署LNMP&phpMyAdmin的方法步骤(docker部署zabbix)》来自互联网同行内容,若有侵权,请联系我们删除!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

网站SEM推广中跳出率原因是什么 如何排查及解决方法(网站推广seo)

搜索引擎营销是一个十分浪费资金的一个推广方式,但其效果在很多的营销技术中,也是收效最好的一种营销方式,在SEM投放广告过程中,会遇到跳出率高的问题,这是目前许多的推广企业都存在的一个客观的问题,如何有...

云服务器速度的影响因素大揭秘!

云服务器已成为企业进行信息化建设和应用部署的有力工具之一,但是服务器的速度直接影响着企业的业务效率和用户的使用体验。本文从网络带宽、硬件配置、应用软件和地理位置四个方面探讨云服务器速度的影响因素。一、...

使用免实名服务器感染病毒了怎么办

使用免实名服务器感染病毒了怎么办当今社会,互联网已经渗透进我们生活的方方面面。我们使用互联网上的免费资源是很常见的,包括一些免实名服务器,免费翻墙软件等等。但是,免费的东西常常伴随着一定的风险。万一在...

阿里云企业邮箱怎么收费的(阿里云企业邮箱收费标准)

文章目录:1、阿里云的企业邮箱是收费的吗2、阿里云企业邮箱可以付款吗3、企业邮箱怎么收费4、企业邮箱如何收费5、阿里云企业邮箱怎么收费?找代理会便宜吗?6、我想问一下企业邮箱如何收费阿里云的企业邮箱是...

如何提高高防服务器安全性(提升高防服务器安全性的方法。)

在当前的网络环境下,高防服务器的安全性备受关注。为了确保服务器的运行安全性,我们需要从四个方面入手,分别是:服务器本身的安全性、网络环境的防护、数据存储安全性、人员管理安全性。本文将分别对这四个方面进...

如何选择适合的香港服务器提供商?

随着互联网的不断发展,越来越多的公司和个人都需要在互联网上拥有自己的网站或应用程序,香港服务器提供商成为人们的首选。但如何选择适合的香港服务器提供商是一个值得思考的问题。本文将从四个方面探讨如何选择适...