docker部署LNMP架构的方法

环境要求:

IP  hostname
192.168.1.1 node1

项目规划:

容器网段:172.16.10.0/24

NGINX:172.16.10.10

MySQL:172.16.10.20

PHP:172.16.10.20

网站根目录:/www

nginx配置文件:/conf

mysql持久化目录:/var/lib/mysql

提前准备服务配置文件:

nginx

<strong>docker run -itd --name test nginx
#运行test容器
docker cp test:/etc/nginx /conf      
#copy主配置文件
ls /conf/
conf.d     koi-win   nginx.conf  win-utf
fastcgi_params mime.types scgi_params
koi-utf     modules   uwsgi_params
docker cp test:/usr/share/nginx/html /www
 #copy网站目录
ls /www/
50x.html
index.html
</strong>

mysql

<strong>[root@node1 ~]# docker rm -f test
test
[root@node1 ~]# docker run -itd --name test -e MYSQL_ROOT_PASSWORD=pwd123 mysql:5.7
6b8d73ecd541d454f121302963a85d53131286d3118a968525a24ad2315b047b
[root@node1 ~]# docker exec -it test sh
# mysql -uroot -ppwd123 -h127.0.0.1
..........
mysql> create database test;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database      |
+--------------------+
| information_schema |
| mysql       |
| performance_schema |
| sys        |
| test        |
+--------------------+
5 rows in set (0.00 sec)

mysql> exit
Bye
# exit
[root@node1 ~]# docker cp test:/var/lib/mysql /var/lib/mysql
</strong>

1、配置lnmp虚拟网卡,网段172.16.10.0/24,网关172.16.10.254

<strong>docker network create -d bridge --subnet 172.16.10.0/24 --gateway 172.16.10.254 lnmp
</strong>

 2、创建nginx容器测试访问 

<strong>#创建mysql挂载数据目录、开发端口、指定IP
[root@node1 ~]# docker run -itd --name mysql -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql --network lnmp --ip 172.16.10.20 mysql:5.7
448227483a9c3141c2155d2c7b027aec263bfcfe4ebc49371b6817c17565ff81
#查看运行状态
[root@node1 ~]# docker ps
CONTAINER ID  IMAGE     COMMAND         CREATED     STATUS     PORTS                NAMES
448227483a9c  mysql:5.7   "docker-entrypoint.s…"  10 seconds ago  Up 9 seconds  0.0.0.0:3306->3306/tcp, 33060/tcp  mysql
4d1e99a06972  nginx:latest  "/docker-entrypoint.…"  3 minutes ago  Up 3 minutes  0.0.0.0:80->80/tcp         nginx
6b8d73ecd541  mysql:5.7   "docker-entrypoint.s…"  9 minutes ago  Up 9 minutes  3306/tcp, 33060/tcp         test
#测试登录
[root@node1 ~]# yum -y install mariadb
[root@node1 ~]# mysql -uroot -ppwd123 -h127.0.0.1
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.33 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> Bye
</strong>

 3、运行MySQL容器 

<strong>[root@node1 www]# docker run -itd --name php-fpm -p 9000:9000 -v /www:/usr/share/nginx/html --network lnmp --ip 172.16.10.30 php:7.2-fpm
ae09213d7c8c84299b1522ca474fccf7f26e27973cd02563891c37d51799b766
[root@node1 www]# docker ps
CONTAINER ID  IMAGE     COMMAND         CREATED     STATUS     PORTS                NAMES
ae09213d7c8c  php:7.2-fpm  "docker-php-entrypoi…"  7 seconds ago  Up 6 seconds  0.0.0.0:9000->9000/tcp       php-fpm</strong>

 4、创建php-fpm容器

<strong>[root@node1 ~]# vim /conf/conf.d/default.conf
</strong>

 5、nginx和PHP的连接 

5.1、添加nginx静态的测试界面

<strong>[root@node1 ~]# echo Hello LNMP! > /www/index.html
[root@node1 ~]# cat /www/index.html
Hello LNMP!
[root@node1 ~]# curl 192.168.1.1
Hello LNMP!
</strong>

5.2、添加PHP测试页面 

<strong>[root@node1 ~]# cd /www
[root@node1 www]# vim test.php
[root@node1 www]# cat test.php
<?php
phpinfo();
?>
[root@node1 www]# docker restart nginx
nginx
[root@node1 www]# pwd
/www
[root@node1 www]# ls
50x.html index.html test.php
</strong>

能够访问到以上两个界面,说明nginx和php的连接,没有问题,接下来是 php和mysql的连接。在这里我们使用一个phpMyAdmin的数据库管理工 具。

6、测试PHP容器与Mysql容器的协调性、工具phpMyadmin

[root@node1 www]# pwd
/www
[root@node1 www]# unzip phpMyAdmin-4.9.0.1-all-languages.zip
[root@node1 www]# mv phpMyAdmin-4.9.0.1-all-languages phpMyAdmin
[root@node1 www]# rm -rf phpMyAdmin  

6.1、更新nginx配置文件 

[root@node1 www]# cd /conf/conf.d/
[root@node1 conf.d]# vim default.conf

 

内容如下:

location /phpmyadmin {
  root  /usr/share/nginx/html;
  index index.php index.html index.htm;
}
location ~ /phpmyadmin/(?<after_ali>(.*)\.(php|php5)?$) {
  root      /usr/share/nginx/html;
  fastcgi_pass  172.16.10.30:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include    fastcgi_params;
}  

测试访问:

其实这主要是php镜像不支持连接mysql,我们要重新写一个。

7、解决php不关联mysql

[root@node1 /]# cd /file/
[root@node1 file]# ls
Dockerfile
[root@node1 file]# cat 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-freetypedir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install mysqli pdo pdo_mysql
[root@node1 file]# docker build -t php_mysql .
#删除php容器
[root@node1 /]# docker rm php-fpm -f
php-fpm
#运行phpmysql容器
[root@node1 /]# docker run -itd --name phpfpm -p 9000:9000 -v /www:/usr/share/nginx/html --network lnmp --ip 172.16.10.30 phpmysql:latest
c4e943880fd51f947cba64ba0006abd26a923439a3e39a0350ca2561b42b8026
[root@node1 /]# docker ps
CONTAINER ID  IMAGE       COMMAND         CREATED     STATUS     PORTS                NAMES
c4e943880fd5  phpmysql:latest  "docker-php-entrypoi…"  14 seconds ago  Up 13 seconds  0.0.0.0:9000->9000/tcp       phpfpm

7.1、phpmysql配置指向mysql地址

[root@node1 www]# cd /www/phpmyadmin/
[root@node1 phpmyadmin]# mv config.sample.inc.php config.inc.php
[root@node1 phpmyadmin]# vim config.inc.php
[root@node1 phpmyadmin]# docker restart phpfpm
phpfpm

8、访问测试  

9、趁热打铁,在发布一个dz论坛

dz论坛链接地址:http://down.chinaz.com/soft/41403.htm

#上传
[root@node1 /]# ls
bin    Discuz_X3.4_SC_UTF8_20210119.zip
#移动到/www网页目录下
mv upload/ /www/dz
chmod 777 /www/dz<br>#保证数据库有dz库<br>#授权一个dz库的管理员<br>#注意安装是IP为数据库的IP不要写错<br>

  

到此这篇关于docker部署LNMP架构的方法的文章就介绍到这了,更多相关docker部署LNMP架构内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 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 --

  • docker 搭建lnmp环境的方法步骤

    创建项目目录 mkdir php 创建如下项目结构 sites 目录放置项目文件 services 目录放置服务相关配置 script 放置自定义脚本 ├── Readme.md ├── docker-compose.yml ├── script ├── services │ ├── mariadb │ │ └── Dockerfile │ ├── nginx │ │ ├── Dockerfile │ │ ├── conf.d │ │ │ └── default.conf │ │ └── ngi

  • Ubuntu 搭建基于Docker的LNMP+Redis的开发环境(图文)

    Ubuntu 搭建基于Docker的LNMP+Redis的开发环境 服务器环境:Ubuntu 14.04 1.安装Docker 1.1 执行update命令,和服务器同步软件包,执行apt-get install * 时可以下载最新的软件. 1.2 安装Docker和创建软链接   1.3 启用Docker服务 2. 获取搭建环境所需镜像 2.1 MySQL镜像 2.2 Redis镜像   2.3 nginx-php-fpm镜像 2.4 查看已下载的镜像 对于Docker初学者来说,可以使用现有

  • 使用docker创建集成服务lnmp环境

    在掌握了docker的基本命令之后,我也是想着去用docker做一点实际的配套环境,就拿自己最常用的lnmp环境来做测试.配套环境运行的顺序依次是mysql->php->nginx,至于为什么,在下面会解释. 1.MySQL 之后服务运行的镜像如无特别的提示,都是从官方拉取的镜像,对于小企业以及个人开发者,官方的镜像更为安全,省心省力. # 拉取镜像 $ docker pull mysql # 运行MySQL $ docker run MySQL --name mysql -d \ -p 33

  • 详解使用 Docker 构建 LNMP 环境

    配置简单的 LNMP 环境 这里使用 docker-compose 的方式,配置内容如下: docker-compose.yml version: "2" services: # Nginx 1.11.10: https://hub.docker.com/_/nginx/ web: image: nginx:1.11.10 ports: # 将主机的 8080 端口映射到容器的 80 端口 - 8080:80 depends_on: - php # 同 php 一起共享 ./apps

  • docker部署LNMP架构的方法

    环境要求: IP hostname 192.168.1.1 node1 项目规划: 容器网段:172.16.10.0/24 NGINX:172.16.10.10 MySQL:172.16.10.20 PHP:172.16.10.20 网站根目录:/www nginx配置文件:/conf mysql持久化目录:/var/lib/mysql 提前准备服务配置文件: nginx <strong>docker run -itd --name test nginx #运行test容器 docker cp

  • 使用shell脚本一键部署LNMP架构的方法

    LNMP架构介绍 LNMP:Linux系统下Nginx+MySQL+PHP这种网站服务器架构.Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器.Mysql是一个小型关系型数据库管理系统.PHP是一种在服务器端执行的嵌入HTML文档的脚本语言. 原理:浏览器发送http request请求到服务器(Nginx),服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)保存服务器上,然后将php脚本通过接口传输协议(网关协议)PHP-FCGI

  • centos6使用docker部署kafka项目的方法分析

    本文实例讲述了centos6使用docker部署kafka项目的方法.分享给大家供大家参考,具体如下: 目录结构: /kafka     /Dockerfile     /start.sh     /Readme     /kafka_2.11-0.10.2.1.tgz Dockfile FROM centos MAINTAINER qiongtao.li hnatao@126.com ADD ./kafka_2.11-0.10.2.1.tgz /opt ADD ./start.sh /star

  • Docker 部署 Mysql8.0的方法示例

    1. 参照官网,安装docker 2.拉取mysql镜像 (默认拉取最新的镜像)8.0.11 docker pull mysql 3.在宿主机创建持久化 mysql data 及mysql.cnf mkdir /usr/local/mysqlData/test/cnf mkdir /usr/local/mysqlData/test/data vi /usr/loal/mysqlData/test/cnf/mysql.cnf 设置本地文件共享: Docker -> Preferences... -

  • 使用docker部署dubbo项目的方法步骤

    1.首先用springboot构建一个简单的dubbo测试程序,并引入相关依赖 编写公共接口api 编写provider实现UserSvice的方法,并暴露服务 编写provider的配置文件 编写Consumer 通过调用provider的服务获取user信息并返回 consumer的配置文件 测试程序已完成 在本地启动,看看程序是否能正常调用服务 启动zookeeper 先启动provider端再启动consumer端 通过dubbo的控制台看到我们的服务已经注册成功 通过访问本地,看到我们

  • Docker部署FastDFS的实现方法

    Docker 安装fastdfs 挂载目录 -v /e/fdfs/tracker:/var/fdfs /e/fdfs/tracker 在 windows 中的文件夹路径为 E:\fdfs\tracker /var/fdfs 为容器中的文件的绝对路径 查看网络 docker network ls # 网络列表 docker network create --driver bridge --subnet=192.168.127.0/24 fastdfs_fastdfs_net # 创建自定义网段 暂

  • 使用Docker部署Angular项目的方法步骤

    Docker 部署 Angular 项目有两种方法,一种是服务端渲染,这个官方文档已有说明,另一种就是使用 node 镜像编译后放入 web 服务器.由于在 node 环境,所以使用 express 最为便捷了. 创建 server.js const express = require('express'); const app = express(); const config = { root: __dirname + '/dist', port: process.env.PORT || 4

  • 如何使用docker部署前端应用的方法步骤

    docker 变得越来越流行,它可以轻便灵活地隔离环境,进行扩容,方便运维管理.对开发者也更方便开发,测试与部署. 最重要的是, 当你面对一个陌生的项目,你可以照着 Dockerfile,甚至不看文档(文档也不一定全,全也不一定对)就可以很快让它在本地跑起来. 现在很强调 devops 的理念,我把 devops 五个大字放在电脑桌面上,格物致知了一天.豁然开朗,devops 的意思就是写一个 Dockerfile 去跑应用(开玩笑. 这里介绍如何使用 Docker 部署前端应用.千里之行,始于

  • Docker 部署Django项目的方法示例

    使用docker部署django项目也很简单,挺不错,分享下 环境 默认你已安装好docker环境 django项目大概结构 (p3s) [root@opsweb]# tree opsweb opsweb ├── apps ├── logs ├── manage.py ├── media ├── opsweb ├── README.md ├── requirements.txt └── static 编写Dockerfile 这里指定 Python 版本为docker官方提供的 "0.0.0.0

随机推荐