Docker部署LNMP

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.mzph.cn/news/47803.shtml

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

相关文章

实战演练 | Navicat 导出向导

数据库工具中的导入导出功能是指将数据从一个数据库系统导出到另一个数据库系统&#xff0c;或者将数据从一个文件格式导出到另一个文件格式。导入导出功能可以通过各种方式实现&#xff0c;例如使用SQL语句、数据库管理工具或第三方库和工具。在进行数据迁移时&#xff0c;通常…

如何关闭“若要接收后续google chrome更新,您需使用windows10或更高版本”

Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Software\Policies\Google\Chrome] "SuppressUnsupportedOSWarning"dword:00000001 如何关闭“若要接收后续 google chrome 更新,您需使用 windows 10 或更高版本” - 知乎

【FAQ】安防监控视频云存储平台EasyNVR频繁离线的原因排查与解决

有用户反馈&#xff0c;在使用EasyNVR时会出现通道频繁离线的情况。针对该反馈我们立即进行了排查。 安防视频监控汇聚EasyNVR视频集中存储平台&#xff0c;是基于RTSP/Onvif协议的安防视频平台&#xff0c;可支持将接入的视频流进行全平台、全终端分发&#xff0c;分发的视频流…

区块链与算力网络:创造未来网络的安全与共享

在数字革命的浪潮下&#xff0c;网络技术正焕发着前所未有的活力&#xff0c;而算力网络以其独特的区块链技术应用&#xff0c;为网络的安全性和资源共享带来了新的可能性。本文将带您深入探索算力网络中区块链技术的神奇应用&#xff0c;为您呈现这个充满活力和创新的网络未来…

华为数通方向HCIP-DataCom H12-821题库(单选题:01-20)

第01题 下面关于OSPF邻居关系和邻接关系描述正确的是 A、邻接关系由 OSPF的 DD 报文维护 B、OSPF 路由器在交换 Hello 报文之前必须建立邻接关系 C、邻居关系是从邻接关系中选出的为了交换路由信息而形成的关系 D、并非所有的邻居关系都可以成为邻接关系 答案&#xff1a;D 解析…

smiley-http-proxy-servlet 实现springboot 接口反向代理,站点代理,项目鉴权,安全的引入第三方项目服务

背景&#xff1a; 项目初期 和硬件集成&#xff0c;实现了些功能服务&#xff0c;由于是局域网环境&#xff0c;安全问题当时都可以最小化无视。随着对接的服务越来越多&#xff0c;部分功能上云&#xff0c;此时就需要有一种手段可以控制到其他项目/接口的访问权限。 无疑 反向…

HTML a标签

<a>标签定义一个超链接。它有如下主要属性&#xff1a; href&#xff1a;指定链接的地址&#xff0c;可以是一个URL、文件路径或锚点。target&#xff1a;指定链接在何处打开。其值包括&#xff1a; _blank&#xff1a;在新窗口或新标签页打开链接。_self&#xff1a;在…

Spring统一功能处理

1. AOP存在的问题 获取参数复杂AOP的规则相对简单 2. 拦截器 2.1. 应用(以登录为例) 2.1.1. 自定义拦截器 新建interceptor文件夹 import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest; import javax.servlet.http…

go_并发编程

go并发编程 一、 并发介绍1&#xff0c;进程和线程2&#xff0c;并发和并行3&#xff0c;协程和线程4&#xff0c;goroutine 二、 Goroutine1&#xff0c;使用goroutine1&#xff09;启动单个goroutine2&#xff09;启动多个goroutine 2&#xff0c;goroutine与线程3&#xff0…

sdk manager (ubuntu20.4) 安装

1、首先下载sdk manager 1.9.3 下载链接 https://www.baidu.com/link?urlVXJhUqxxhS3eFK3bOPTzi5LFl6ybeW3JwDY1CwANaPf1gvO3IxQKzY547NIe53x1blJxnAXg7FTRTvs-cnfnVa&wd&eqida22baa7b0004ca980000000664e2d426 当然要登录自己的账号才能成功下载&#xff0c;下载对应…

用于智能图像处理的计算机视觉和 NLP

莫斯科&#xff0c;神秘之城...&#xff08;这张照片由伊戈尔沙巴林提供&#xff09; 一、说明 如今&#xff0c;每个拥有智能手机的人都可能成为摄影师。因此&#xff0c;每天都有大量新照片出现在社交媒体、网站、博客和个人照片库中。尽管拍照的过程可能非常令人兴奋&#x…

MyBaits注解开发

1、注解开发介绍 在过去使用框架开发项目&#xff0c;基本都采用xml作为框架的核心配置文件存在&#xff0c;但是这种方式开发效率还是比较地下、不灵活。 现在企业开发为了能够更快的提高开发效率&#xff0c;必然会使用企业级框架进行项目开发&#xff0c;而现在主流的框架…

docker 安装oracle19c linux命令执行sql

docker安装oracle # 下载镜像 19.3.0.0.0 docker pull registry.cn-hangzhou.aliyuncs.com/laowu/oracle:19c # 创建文件 mkdir -p /home/mymount/oracle19c/oradata # 授权&#xff0c;不授权会导致后面安装失败 chmod 777 /home/mymount/oracle19c/oradatadocker run -d \ …

还不知道怎么提示LLM?ChatGPT提示入门

文章目录 简介&#xff1a;什么是人工智能&#xff1f;什么是提示过程&#xff1f;为什么会出现这样的差异&#xff1f; 为什么需要提示过程&#xff1f;1) 文章摘要2) 数学问题求解 如何进行提示过程&#xff1f;角色提示&#xff1a;多范例提示&#xff1a;无范例提示单范例提…

Redis-设置密码linux服务器

操作步骤 打开Redis的配置文件&#xff0c;通常位于 /etc/redis/redis.conf。在配置文件中找到 #requirepass 或 requirepass 的行&#xff0c;如果存在的话&#xff0c;取消行首的注释符号 #。将密码设置为你想要的值&#xff0c;例如 requirepass YourPassword。确保将 Your…

Gitlab 安装全流程

Version&#xff1a;gitlab-ce:16.2.4-ce.0 简介 Gitlab 是一个开源的 Git 代码仓库系统&#xff0c;可以实现自托管的 Github 项目&#xff0c;即用于构建私有的代码托管平台和项目管理系统。系统基于 Ruby on Rails 开发&#xff0c;速度快、安全稳定。它拥有与 Github 类似…

Android AppCompatActivity标题栏操作

使用 AndroidStudio 新建的工程默认用 AppCompatActivity &#xff0c;是带标题栏的。 记录下 修改标题栏名称 和 隐藏标题栏 的方法。 修改标题栏名称 Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R…

龙讯旷腾PWmat已部署至曙光智算平台

编者荐语&#xff1a; 近期&#xff0c;龙讯旷腾核心产品PWmat已成功部署至曙光智算AC.sugon.com平台&#xff0c;可为用户提供包括分子建模、第一性原理计算、数据可视化等在内的完备的超级计算云服务&#xff0c;让大家能够轻松上手具有完全自主知识产权的大尺度高性能材料计…

详解Spring的循环依赖问题、三级缓存解决方案源码分析

0、基础&#xff1a;Bean的生命周期 在Spring中&#xff0c;由于IOC的控制反转&#xff0c;创建对象不再是简单的new出来&#xff0c;而是交给Spring去创建&#xff0c;会经历一系列Bean的生命周期才创建出相应的对象。而循环依赖问题也是由Bean的生命周期过程导致的问题&#…

Hyperf 如何做到用两个端口 9501/9502 都能连接 Websocket 服务以及多 Worker 协作实现聊天室功能

为何 Hyperf 能够在两个端口上监听 WebSocket 连接&#xff1f; 源码角度来看&#xff0c;在配置了多个 Servers 时&#xff0c;实际上&#xff0c;只启动了一个 Server 注&#xff1a;我之前接触的代码都是启动一个服务绑定一个端口&#xff0c;之前也看过 swoole 扩展的文档…