docker中部署lnmp架构

news2025/2/23 23:27:25

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

docker中部署lnmp架构

  • 前言
  • 一、安装docker和docker-compose
  • 二、文件部署准备
  • 三、创建ngixn虚拟主机配置文件
  • 四、创建html文件夹
  • 五、启动容器
  • 文件结构


前言

Docker是一种轻量级的虚拟化技术,通过将应用程序及其依赖资源打包成一个镜像并运行在容器中,来实现应用的隔离和快速部署。而LNMP(Linux + Nginx + MySQL + PHP)架构是一个常见的Web应用程序架构,它将Linux作为操作系统,Nginx作为Web服务器,MySQL作为数据库,PHP作为服务器端编程语言,通过结合这些技术能够快速搭建一个高效稳定的Web应用程序。

将LNMP架构与Docker集成,可以提供以下几方面的优势:

  1. 确保应用程序的可移植性:将应用程序打包成Docker镜像后,可以在任何支持Docker容器的环境中运行,不必担心因为环境不同而导致应用程序不稳定或无法运行。

  2. 提高生产效率:Docker镜像可以被快速的创建和销毁,允许在短时间内快速部署和更新应用程序,从而大幅提高生产效率。

  3. 保障应用程序的隔离性和安全性:使用Docker容器来运行LNMP架构应用程序,可以在不同容器中隔离独立的进程和应用程序,从而提高应用程序运行的安全性和稳定性。


一、安装docker和docker-compose

vim /etc/yum.repos.d/docker.repo
[docker]
name=docker-ce
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable
gpgcheck=0

[centos]
name=extras
baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64
gpgcheck=0

yum install -y docker-ce

systemctl enable --now docker

vim /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1

sysctl --system
docker info

部署docker-compose

mv docker-compose-linux-x86_64-v2.5.0 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

二、文件部署准备

创建文件夹 mkdir docker/lnmp
创建文件 vim docker-compose.yml

version: '1.0'
services:
  mysql:
    image: mysql:5.7
    container_name: mysql
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: westos
      MYSQL_DATABASE: sql1
      MYSQL_USER: westos
      MYSQL_PASSWORD: westos
    ports:
      - "3306:3306"
    volumes:
      - ${PWD}/mysql:/var/lib/mysql

  php:
    image: php:8.0-fpm
    container_name: php
    restart: always
    ports:
      - "9000:9000"
    volumes:
      - ${PWD}/html:/var/www/html

  nginx:
    image: nginx:latest
    container_name: nginx
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ${PWD}/html:/var/www/html
      - ${PWD}/nginx/conf.d:/etc/nginx/conf.d
      - ${PWD}/nginx/ssl:/etc/nginx/ssl

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      PMA_HOST: mysql
      PMA_PORT: 3306
      PMA_ARBITRARY: 1
    ports:
      - "8080:80"
    restart: always

三、创建ngixn虚拟主机配置文件

在新建的文件夹中创建一个名为“nginx”文件夹,再新建一个“conf.d”文件夹,在该文件夹中创建一个名为“default.conf”的文件,并添加以下内容:
server {
listen 80;
listen [::]:80;
server_name www.westos.org;

root /var/www/html;
index index.php index.html index.htm;

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

location /phpmyadmin {
    allow 192.168.0.0/16;
    deny all;
    alias /usr/share/phpmyadmin/;
    index index.php;
    try_files $uri $uri/ =404;

    location ~ \.php$ {
        fastcgi_param MYSQL_HOST mysql;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin$fastcgi_script_name;
        fastcgi_param PHP_VALUE "upload_max_filesize=128M \n post_max_size=128M";
    }
}

location ~ \.php$ {
    fastcgi_pass php:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

location ~ /\.ht {
    deny all;
}

}


四、创建html文件夹

在新建的文件夹中创建一个名为“html”的文件夹,该文件夹下可以放置你自己的网站文件

五、启动容器

运行yml文件
在命令行中进入到yml文件所在的目录中,输入以下命令启动容器:

docker-compose up -d

等待容器启动完成,即可在浏览器中输入你的域名访问网站,并使用“your_domain_name/phpmyadmin”访问phpMyAdmin进行数据库管理。
在windows中可以使用IP进行访问。

文件结构

.
├── docker-compose.yml
├── html
│ ├── index.html
│ └── index.php
├── mysql
│ ├── mysql
└── nginx
├── conf.d
└── default.conf

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

5.6.1 Ext JS之标签页的关闭和批量关闭

Tab Panel 是包含多个标签页的面板, 这是一种很常用的组件, 类似于浏览器的标签页。关于 Ext JS的Tab Panel的基本使用可以参考: [Ext JS3.9] 标签面板(TabPanel )介绍与开发, 本篇介绍如何关闭单个标签页和批量关闭标签页。 Tab 标签页的可关闭 默认状况下,标签页是无…

23.反射(reflection)|Java学习笔记

文章目录 反射机制Java反射机制原理图Java反射机制可以完成反射相关的主要类反射优点和缺点 Class类 反射机制 一个简单的例子: package com.edu.reflection.question;import java.io.FileInputStream; import java.io.IOException; import java.lang.reflect.Invo…

消防安全知识答题活动小程序v5.0-支持答题后抽奖

关于答题抽奖活动小程序的设计思考 1. 功能设计:作为答题抽奖活动小程序,核心功能应包括答题和抽奖两部分。用户通过答题获取抽奖机会,答题可以设置为多个题目,用户回答正确则获得相应分数。在用户答完问题后,可以立即…

优思学院|企业业绩差的7大原因,善用精益管理可解决

在当今竞争激烈的商业环境中,一些企业的业绩表现出了较差的趋势,这可能是由于多种原因造成的。下面将探讨企业业绩差的七大原因,并介绍如何善用精益管理来提升企业的绩效。 1. 战略定位不清 企业业绩差的一个常见原因是战略定位不清。如果企…

如何用流量涡轮打造属于自己的汽车行业高价值私域流量池

01. 私域提升品牌价值 2010年以来,中国汽车工业就一直处于两位数的增长。这使得国内外品牌都能在市场上站稳脚跟。这为许多汽车公司提供了获得可观利润的绝佳机会。汽车成为明星行业,在此阶段的车企高管们也成为了行业翘楚。然而,2018年之后…

延迟渲染G-buffer所占显存带宽计算(解决移动端和抗锯齿的若干疑问)

延迟渲染需要在前面阶段,将计算的内容保留在N张G-buffer中,但是网上的文章只是提及了G-buffer应该压缩,并且尽量少用,没有说明G-buffer所占带宽应该是多少,我将在下面介绍G-buffer所占显存带宽的详细计算方法 G-buffe…

4、DuiLib了解 XML使用和布局控制

文章目录 1、了解 XML使用和布局控制2、内外边距3、浮动4、占位符5、默认样式6、全局字体 1、了解 XML使用和布局控制 通过上一篇的学习我们可以制作一个简单的布局了,但是没有控件的窗口做再好的布局有什么用呀。赶紧找些素材,我们来做一个标准的 Wind…

黄金期货交易规则有哪些?黄金期货交易规则详解

黄金期货交易是一种高风险的投资工具,因此新手投资者在准备交易前建议先学习重要的黄金期货交易规则,对黄金期货产品交易有一个大概的了解。黄金期货交易规则有哪些?以下是重要的黄金期货交易规则详解 黄金期货交易规则一、交易前需要先开户 …

在Deepin虚机中共享使用主机文件夹

一、系统环境: 操作系统:Win11 虚机版本:VMWare workstation 16 pro 虚机系统:deepin 20.9 二、主机中操作 VMWare Workstation/虚拟机/设置/选项/共享文件夹 默认为已禁用,在右侧选择“总是启用”,在…

如何知道自己的论文适合哪个期刊呢?

论文写得好,不如期刊选得好! 如何才能快速、轻松地找到适合的SCI论文期刊呢?在这篇文章中,笔者将分享选择SCI期刊的方法,并总结了需要考虑的要素,可以帮助作者缩小期刊选择的范围,迅速做出最佳决…

自制开源的 Midjourney、Stable Diffusion “咒语”作图工具

本篇文章聊聊如何通过 Docker 和八十行左右的 Python 代码,实现一款类似 Midjourney 官方图片解析功能 Describe 的 Prompt 工具。 让你在玩 Midjourney、Stable Diffusion 这类模型时,不再为生成 Prompt 描述挠头。 写在前面 本文将提供两个版本的工…

0基础学习VR全景平台篇第44篇:编辑器底部菜单- 添加多态

大家好,欢迎观看蛙色VR官方系列——后台使用课程! 本期为大家带来蛙色VR平台,底部菜单—添加多态功能操作。 功能位置示意 一、本功能将用在哪里? 多态场景,指同一个空间场景不同状态下的无缝切换,通过拍…

netty 总结

1. NIO和BIO的比较 BIO以流的方式处理数据,而NIO以块的方式处理数据,块I/O的效率比流I/O高很多。 BIO是阻塞的,NIO是非阻塞的 BIO基于字节流和字符流进行操作,而NIO是基于Channel(通道)和Buffer&#xff08…

Android 反编译apk,然后修改内容后二次签名打包

1. 下载apktool.jar ,下载地址: iBotPeaches / Apktool / Downloads — Bitbucket 2. mac电脑使用 apksigner 方式签名, 需要配置环境. 2.1 命令行输入: open .bash_profile, 在打开的环境配置文件中添加,根据自己SDK目录配置 export APK_SIGNER_HOME/opt/android-sd…

QML TreeView 简单使用

本文主要介绍 QML 中 TreeView 的基本使用方法,包括:TreeView的适用场景; 控件简介 QML TreeView 是 Qt Quick 中的一个组件,用于显示树形结构的数据。它提供了一种以层次结构方式展示数据的方式,其中每个节点可以包含…

蒸汽朋克 VoxEdit 竞赛

欢迎来到蒸汽朋克 VoxEdit 比赛,在这个充满装备和蒸汽的世界里,创意和体素互相碰撞,激发无尽创意! 蒸汽朋克是将过去重新想象为带有未来主义色彩的风格。通过将维多利亚时代的优雅与蒸汽动力机械和黄铜装置相结合,将您…

【强烈推荐】 十多款2023年必备国内外王炸级AI工具 (免费 精品 好用) 让你秒变神一样的装逼佬感受10倍生产力 (2) AI修音

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞&#x1…

C# 特性

目录 什么是特性 Serializable DllImport Obsolete Conditional 自定义Attribute 特性定义:特性其实是一个类,是直接/间接继承自Attribute,约定俗成是以Attribut结尾,在标记的时候以[ ]包裹,尾部的Attribut可以…

竞赛知识点5【图论】

文章目录 前言基本概念图的定义和分类路径顶点的度、入度、出度图的存储图的DFS遍历图的BFS遍历判断是否为欧拉图拓扑排序关键路径前言 图论起源于著名的哥尼斯堡七桥问题——从这四块陆地中任何一块开始,通过每一座桥正好 一次,再回到起点。欧拉在 1736 年解决了这个问题,…

【计算机视觉】千字汇总:一文读懂计算机视觉,干货满满记得收藏

文章目录 一、前言二、计算机视觉为什么重要三、什么是计算机视觉四、计算机视觉的基本原理五、计算机视觉的典型任务5.1 图像分类5.2 目标检测5.3 语义分割5.4 实例分割5.5 目标追踪 六、计算机视觉在日常生活中的应用场景6.1 门禁、支付宝上的人脸识别6.2 停车场、收费站的车…