Docker部署LNMP

news2024/11/18 8:38:58

Docker部署LNMP

    • 一、安装docker
      • 1.安装docker
      • 2.镜像下载
    • 二、部署MySQL
      • 1.获取镜像
      • 2.创建启动容器创建启动容器 huahua_mysql
    • 三、部署PHP
      • 1.获取镜像
      • 2.创建容器
      • 3.查看信息
    • 四、安装nginx
      • 1.获取镜像
      • 2.创建运行容器
      • 3.修改nginx配置文件
    • 五、总结
      • 1. 安装Docker和Docker Compose:
      • 2. 创建Docker Compose文件:
      • 3. 定义Nginx服务:
      • 4. 定义MySQL服务:
      • 5. 定义PHP-FPM服务:
      • 6. 构建和启动容器:
      • 7. 配置Nginx虚拟主机和网站文件:
      • 8. 访问网站:

一、安装docker

1.安装docker

systemctl stop firewalld.service
setenforce 0
#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2 

yum-utils:提供了 yum-config-manager 工具。
device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
--------------------------------------------------------------------------------------------

#设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

#安装 Docker-CE并设置为开机自动启动
yum install -y docker-ce docker-ce-cli containerd.io docker-ce-20.10.18
安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。 Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。
yum install -y docker-ce  docker-ce-cli    
docker -v #查看版本

2.镜像下载

(1)镜像仓库

  • Nginx仓库:https://hub.docker.com/_/nginx/
  • PHP仓库:https://hub.docker.com/_/php/
  • MySQL仓库:https://hub.docker.com/_/mysql/

二、部署MySQL

1.获取镜像

systemctl start docker #开启docker
docker pull mysql  #获取MySQL镜像

2.创建启动容器创建启动容器 huahua_mysql

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=huahua --name huahua_mysql mysql

三、部署PHP

1.获取镜像

docker pull php:7.2-fpm

2.创建容器

docker run -d -v /var/nginx/www/html:/var/www/html -p 9000:9000 --link huahua_mysql:mysql --name huahua_phpfpm php:7.2-fpm

3.查看信息

docker ps

在这里插入图片描述
(1)测试主机目录是否映射到PHP目录中

[root@docker ~]# docker exec -it 4e860509a2b7 /bin/bash #进入PHP容器
root@4e860509a2b7:/var/www/html# touch index.php #创建测试文件
root@4e860509a2b7:/var/www/html# ls
index.php
root@4e860509a2b7:/var/www/html# exit #退出容器
exit
[root@docker ~]# ls /var/nginx/www/html/ #查看测试文件
index.php

在这里插入图片描述
(2)修改配置文件

vim /var/nginx/www/html/index.php 

<?php
echo phpinfo();
?>

(3)进入容器安装PHP依赖环境

docker exec -it 4e860509a2b7 /bin/bash
pecl install redis && docker-php-ext-enable redis

在这里插入图片描述

(4)检查安装
php -m
在这里插入图片描述

四、安装nginx

1.获取镜像

docker pull nginx:1.12.2

2.创建运行容器

docker run -d -p 80:80 --name huahua_nginx -v /var/nginx/www/html:/var/www/html --link huahua_phpfpm:phpfpm --name huahua_nginx nginx:1.12.2
docker ps #查看信息

在这里插入图片描述

3.修改nginx配置文件

(1)进入容器修改配置

docker exec -ti huahua_nginx /bin/bash

(2)修改/etc/nginx/conf.d/default.conf配置
但是容器里是没有安装vim的,先从容器内导出配置文件,在容器外编辑然后拷贝进去
① 将配置文件复制到我创建的test文件夹下

mkdir test
docker cp a398662acaa1:/etc/nginx/conf.d/default.conf ./test/

② 修改配置

vim /test/default.conf 

在这里插入图片描述

③ 修改后的配置文件传入容器中

docker cp ./test/default.conf  a398662acaa1:/etc/nginx/conf.d/default.conf

④ 再次进入容器从新加载配置文件

nginx -t 
nginx -s reload

在这里插入图片描述
⑤ 测试是否成功
ss -anlt #查看主机与容器的端口映射
在这里插入图片描述

  • 浏览器测试:192.168.174.15/index.php
    在这里插入图片描述

五、总结

使用Docker搭建LNMP(Linux + Nginx + MySQL + PHP)应用环境可以有效简化部署过程并提高可移植性。以下是使用Docker搭建LNMP环境的简要总结:

1. 安装Docker和Docker Compose:

  • 在Linux上,使用包管理器安装Docker并启动Docker服务。
  • 安装Docker Compose以简化多容器应用的管理。

2. 创建Docker Compose文件:

  • 创建一个名为docker-compose.yml的文件,并在其中定义LNMP环境所需的服务和容器配置。

3. 定义Nginx服务:

  • 在Docker Compose文件中定义一个Nginx服务,并指定容器映射的端口和Nginx配置文件。

4. 定义MySQL服务:

  • 在Docker Compose文件中定义一个MySQL服务,并配置容器中MySQL的环境变量和存储数据的卷。

5. 定义PHP-FPM服务:

  • 在Docker Compose文件中定义一个PHP-FPM服务,并指定与Nginx容器连接的卷。

6. 构建和启动容器:

  • 在终端中使用docker-compose up -d命令构建和启动LNMP环境的容器。

7. 配置Nginx虚拟主机和网站文件:

  • 在主机上创建Nginx的虚拟主机配置文件,并将网站文件放在指定的位置。

8. 访问网站:

  • 使用浏览器访问配置的域名或IP地址,检查是否能够正确访问到Nginx和PHP-FPM服务,以及连接到MySQL数据库。

使用Docker搭建LNMP环境可以使配置和部署更容易和可移植,并提供灵活性和扩展性,使开发者能够快速搭建和管理LNMP应用程序。然而,在实际使用过程中仍需根据具体需求和情况进行适当的调整和优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/905911.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IO模型(阻塞IO、非阻塞IO、IO多路复用)

1.阻塞IO&#xff1a;最常用&#xff0c;最简单&#xff0c;效率最低 2.非阻塞 IO--->fcntl&#xff1a;获取或设置fd所指定的文件描述符的属性 箭头地方二选一 3.IO多路复用&#xff1a;允许同时对多个IO进行控制 select&#xff1a;内核同时检测多个IO&#xff0c;一…

金额千位符自定义指令

自定义指令文件 moneyFormat.js /*** v-money 金额千分位转换*/export default {inserted: inputFormatter({// 格式化函数formatter(num, util) {if(num null || num || num undefined || typeof(num) undefined){return }if(util 万元 || util 万){return formatMone…

SHELL 基础 显示字符颜色, 修改历史命令,Linux里的命令 执行顺序

echo 打印命令 &#xff1a; 显示字符串 &#xff1a; [rootserver ~]# echo this is SHELL language this is SHELL language [rootserver ~]# echo this is SHELL language this is SHELL language [rootserver ~]# echo "this is SHELL language" this is SH…

vue 使用nvm控制node 版本,随意切换 node 版本

1.nvm 下载安装 https://github.com/coreybutler/nvm-windows/releases 找自己版本 1.安装版本 nvm list available // 查看所有node 版本 nvm install 版本号 // 安装指定版本号2.nvm 列表展示 nvm list //展示所有版本号3.nvm 切换环境 nvm use 版本号 // 切换版本4.…

星际争霸之小霸王之小蜜蜂(四)--事件监听-让小蜜蜂动起来

目录 前言 一、监听按键并作出判断 二、持续移动 三、左右移动 总结&#xff1a; 前言 今天开始正式操控我们的小蜜蜂了&#xff0c;之前学java的时候是有一个函数监听鼠标和键盘的操作&#xff0c;我们通过传过来不同的值进行判断&#xff0c;现在来看看python是否一样的实现…

框架分析(1)-IT人必须会

框架分析&#xff08;1&#xff09;-IT人必须会 专栏介绍当今主流框架前端框架后端框架移动应用框架数据库框架测试框架 Angular关键特点和功能&#xff1a;组件化架构双向数据绑定依赖注入路由功能强大的模板语法测试友好 优缺点分析优点缺点 总结 专栏介绍 link 主要对目前市…

计算机竞赛 协同过滤电影推荐系统

文章目录 1 简介1 设计概要2 课题背景和目的3 协同过滤算法原理3.1 基于用户的协同过滤推荐算法实现原理3.1.1 步骤13.1.2 步骤23.1.3 步骤33.1.4 步骤4 4 系统实现4.1 开发环境4.2 系统功能描述4.3 系统数据流程4.3.1 用户端数据流程4.3.2 管理员端数据流程 4.4 系统功能设计 …

Datawhale 北邮分部成立了!

Datawhale分部 联合发起&#xff1a;陈玉立、陈逸涵、夏镇、李泽钜、邢植尧 蓟门以南&#xff0c;明光之北。杏坛向西&#xff0c;城垣东望。厚德博学&#xff0c;敬业乐群。 BYR&#xff0c;Datawhale北京邮电大学分部&#xff08;北邮AI俱乐部&#xff09;来啦&#xff01; …

微信好友恢复大师两招教你找回微信好友

在使用微信的时候&#xff0c;一些小伙伴可能没有给好友备注的习惯&#xff0c;所以很容易在清理“僵尸好友”时会不小心误删。如果您没有保存对方的联系方式&#xff0c;并且你们之间也没有共同好友&#xff0c;那么该如何重新加回好友呢&#xff1f;今天&#xff0c;小编就要…

Springboot 自定义 Mybatis拦截器,实现 动态查询条件SQL自动组装拼接(玩具)

前言 ps&#xff1a;最近在参与3100保卫战&#xff0c;战况很激烈&#xff0c;刚刚打完仗&#xff0c;来更新一下之前写了一半的博客。 该篇针对日常写查询的时候&#xff0c;那些动态条件sql 做个简单的封装&#xff0c;自动生成&#xff08;抛砖引玉&#xff0c;搞个小玩具&a…

【已解决】Please install Node.js and npm before continuing installation.

给juopyter lab安装插件时报这个错 原因是&#xff0c;conda本身有nodejs&#xff0c;但是版本很低&#xff0c;只有0.几 所以需要卸载掉原来的nodejs&#xff0c;重新安装10版本以上的nodejs # 卸载命令 pip uninstall nodejs # 安装命令 conda install nodejs14.7.0 -c cond…

从入门到精通:微信小程序跳转页面的实用指南

前言 微信小程序中页面跳转方法的灵活运用不仅可以提升用户体验&#xff0c;还能为应用增添更多创意和吸引力。本文将为大家详细介绍微信小程序跳转页面的方法&#xff0c;让你的应用与众不同&#xff0c;为用户带来全新的体验。 方式一&#xff1a;wx.navigateTo 保留当前页面…

第1步---MySQL安装和配置

第1步---MySQL安装和配置 1.下载地址 MySQL :: Download MySQL Community Server (Archived Versions) 直接下载zip形式的就可以。 2.在bin的同级目录下常见my.ini文件。 输入下面的内容 my.ini中的文本&#xff1a; [mysqld] #设置3306端口 port3306 character-set-server…

DELL R740 R750服务器安装Windows 11

正常安装出现如下 2、同时按下ShiftF10组合键调出管理员命令提示符窗口&#xff0c;依次执行下面命令&#xff0c;输入命令&#xff0c;按Enter键执行&#xff0c;提示操作成功完成&#xff0c;才可以。这些命令可以添加注册表项&#xff0c;绕过TPM、安全启动、CPU、内存和硬盘…

Linux常用命令——diffstat命令

在线Linux命令查询工具 diffstat 显示diff命令输出信息的柱状图 补充说明 diffstat命令用来显示diff命令输出信息的柱状图&#xff0c;用以显示diff命令比较两个文件的不同统计信息。用户也可以直接使用|将diff命令所输出的结果直接送给diffstat命令进行统计结果的显示。使…

如何编写一个通用的函数?

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 金句分享:…

微信个人号开发,实现机器人辅助社群操作

微信 iPad 协议是指用于在 iPad 设备上使用微信应用的技术协议。一般来说&#xff0c;通过该协议可以将微信账号同步到 iPad 设备上&#xff0c;并且可以在 iPad 上发送和接收微信消息&#xff0c;查看好友列表、聊天记录等功能。微信 iPad 协议是通过私有API实现的。 需要一定…

图片转文字生成器分享,再也不用担心转换麻烦

在现今社交媒体时代&#xff0c;图片已经成为人们传递信息的重要方式之一。但是&#xff0c;由于有些图片可能不易于理解或者文字更能够准确表达内容&#xff0c;将图片转换为文字已经成为了一种常见的需求。在本文中&#xff0c;我们将分享一些将图片转换为文字的方法以及需要…

SIP桌面式对讲主机 井下通信广播sip寻呼话筒

SV-8003VP是我司的一款SIP桌面式对讲主机&#xff0c;具有10/100M以太网接口&#xff0c;配置了麦克风输入和扬声器输出&#xff0c;还配置多达22个按键和2.8英寸液晶显示屏&#xff0c;可以配合SIP服务器使用。SV-8003VP网路寻呼话筒可以通过麦克风或者本地线路输入对SIP终端进…

Java-异常分析和处理

Java异常处理 在Java中&#xff0c;将程序执行过程中发生的不正常行为称为异常。比如之前写代码时经常遇到的&#xff1a; 算术异常 数组越界异常 空指针异常 异常的体系结构 Throwable&#xff1a;是异常体系的顶层类&#xff0c;其派生出两个重要的子类, Error 和 Except…