docker部署LNMP&phpMyAdmin

环境准备:

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

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

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

项目操作:

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

[[email protected] ~]# docker network create -d bridge --subnet  172.16.10.0/24 --gateway 172.16.10.1 mynet1

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

[[email protected] ~]# docker pull nginx
[[email protected] ~]# docker pull php:7.2-fpm  <!--使用的是php:7.2-fpm的镜像-->
[[email protected] ~]# docker pull mysql:5.7   <!--使用的是mysql:5.7的镜像-->

(3)####运行一个基于nginx镜像的容器#####
#先将nginx服务运行,以拷贝出nginx的配置文件:

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

在宿主机创建需要挂载文件的目录:
网站主目录:/wwwroot;
nginx的配置文件:/docker;

[[email protected] ~]# mkdir /wwwroot
[[email protected] ~]# mkdir /docker

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

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

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

[[email protected] ~]# ls /docker/nginx/conf.d/ 

default.conf   

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

拷贝nginx网页目录

[[email protected] ~]# docker cp test1:/usr/share/nginx/html /wwwroot/
[[email protected] ~]# ls /wwwroot/html/
50x.html  index.html

修改nginx默认的测试网页:

[[email protected] html]# echo "<h1>hello welcome to nginx web</h1>" > index.html


(4)运行nginx容器:
分别将容器中目录挂载到本地目录,并且指定ip地址

[[email protected] ~]# 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容器:

[[email protected] ~]# 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客户端:
[[email protected] ~]# yum -y install mysql

(6)运行php容器:

[[email protected] ~]# 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配置文件:
    [[email protected] html]# vim /docker/nginx/conf.d/default.conf

(8)配置mysql:
搭建phpMyadmin:

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

解压到当前目录:
[[email protected] html]# unzip phpMyAdmin-4.9.1-all-languages.zip

重命名:
[[email protected] html]# mv phpMyAdmin-4.9.1-all-languages phpmyadmin

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

[[email protected] html]# vim /docker/nginx/conf.d/default.conf

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

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

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

访问php解析nginx网页:

接下来测试登陆 phpMyAdmin:
访问urlhttp://172.16.1.30/phpmyadmin/index.php

缺少mysqli模块,所以无法访问,所以需要添加php支持mysql配置模块:
怎样针对容器进行添加扩展模块,我们可以登陆dockerhub进行查询相关文档:

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


复制以上dockerfile脚本,到本地进行安装:
注意还需添加部分内容:
[[email protected] ~]# 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:
[[email protected] ~]# docker build -t phpfpm-mysqli .

  • 参数解释:
  • build:进行构建
  • -t :指定标签
  • . 表示当前目录下的Dockerfile

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

[[email protected] ~]# docker stop phpfpm
phpfpm
[[email protected] ~]# docker rm phpfpm
phpfpm

[[email protected] ~]# 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去掉。

[[email protected] phpmyadmin]# pwd
/wwwroot/html/phpmyadmin
[[email protected] phpmyadmin]# cp config.sample.inc.php  config.inc.php

对配置文件进行修改:
[[email protected] phpmyadmin]# vim config.inc.php

修改完配置文件重启php:

[[email protected] phpmyadmin]# docker restart phpfpm
phpfpm

访问phpMyAdmin网页:
输入url:http://172.16.1.30/phpmyadmin/index.php

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

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

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

———————— 本文至此结束,感谢阅读 ————————

原文地址:https://blog.51cto.com/13972012/2445556

时间: 2024-10-16 16:01:06

docker部署LNMP&phpMyAdmin的相关文章

docker部署LNMP环境

首先要有确认环境中有需要的tar包,可以使用[docker pull]()来下载这些镜像 现在我们是使用已经下载好的镜像,所以需要导入一下 [[email protected] ~]# docker load -i nginx.tar && docker load -i wordpress.tar && docker load -i mysql-5.7.tar && docker load -i php.7.2-fpm.tar //导入nginx,wordp

docker部署lnmp集群

LNMP的网段为:172.16.10.0/24 服务容器与各个ip:nginx 172.16.10.10mysql 172.16.10.20php 172.16.10.30** 导入一下镜像包:mysql5.7php.7.2-fpm.tarwordpress.tarnginx.tar 将导入的镜像包导成docker可用的镜像:docker load < nginx.tar && docker load < wordpress.tar && docker load

[转]docker 部署 mysql + phpmyadmin 3种方法

本文转自:https://blog.csdn.net/Gekkoou/article/details/80897309 方法1: link # 创建容器 test-mysql (千万别用 mysql:latest, 会哭)# docker run --name test-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS

CenOS7 docker部署lnmp环境

Step1:下载lnmp镜像 [[email protected] html]# docker pull winstonpro/lnmp Step2:启动lnmp镜像的docker实例 [[email protected] html]# docker run -d -p 80:80 -p 443:443 -p 3306:3306  -v /var/www/html:/home/wwwroot/default --name lnmp winstonpro/lnmp -v做映射,将本机的/var/w

centos7搭建docker并部署lnmp (转)

1.首先呢先更新yum源 yum -y update 2.1.安装docker存储库 yum install -y yum-utils device-mapper-persistent-data lvm2 这一步是什么意思呢  官方这么解释 Before you install Docker CE for the first time on a new host machine, you need to set up the Docker repository. Afterward, you c

使用Docker部署PHP应用的设计方案

1. Docker Docker的官方定义是: Docker allows you to package an application with all of its dependencies into a standardized unit for software development. -- https://www.docker.com/whatisdocker 毫无疑问的是,Docker解决了应用部署上一个巨大的问题: 客户: 安装好了,用不了. 发布者:我的机器上没问题. 如何解决每

docker搭建 LNMP 环境

一.准备镜像安装完docker后,更换完镜像源(docker的安装十分简单自行百度即可)打开/etc/docker目录下的daemon.json添加以下内容 {"registry-mirrors": ["https://o3niohlb.mirror.aliyuncs.com"]} docker工作的基础即是镜像,可以认为镜像是一个独立的由应用组成的虚拟机重启docker服务 service docker restart docker pull nginx:alpi

分离部署LNMP搭建WORDPRESS详细步骤

分离部署LNMP搭建WORDPRESS LNMP是一个基于CentOS/Debian编写的Nginx.PHP.MySQL.PHPMyAdmin.LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构. Nginx较为稳定.功能丰富.安装配置简单.低系统资源,Nginx既可以在内部直接支持PHP,也可以支持作为HTTP代理服务器对外进行服务. Nginx用C编写,不论是系统资源开销还是CPU使用效率都比Perlbal好得多. wordpress是一款开源免费的产品,利

Python实现一键安装部署LNMP环境

最近一直在学Python,东西比较多,时间持续的也比较长,为了能够学以致用,想到了原来写过的shell一键安装部署LNMP脚本,既然shell能写,Python也一定能写,就用学到的知识写了下面这个版本,这可能并不是最优版本,等学到更多东西的时候再进行优化升级! 环境介绍: Python 2.6.6 Centos 6.5 nginx 1.10.1 mysql 5.6.34 php 5.3.3 代码如下: #!/bin/env python import os import sys def ent