Docker Compose 构建 LNMP 环境:一站式 PHP 网站部署指南

news2024/9/24 5:28:11

Docker Compose 构建 LNMP 环境:一站式 PHP 网站部署指南

    • 简介
    • 环境准备和安装
      • 安装 Docker
      • 安装 Docker Compose
      • 准备项目目录结构
    • 编写 Docker Compose 文件
      • 基础结构
      • 配置 Nginx 服务
      • 配置 PHP 服务
      • 配置 MySQL 服务
      • 完整的 `docker-compose.yml` 示例
    • Nginx 容器配置
      • 创建 Nginx 配置文件
      • 设置虚拟主机和端口映射
      • 配置文件放置
      • 优化和安全设置
      • 测试配置
    • PHP 容器配置
      • 编写 PHP Dockerfile
      • 配置 PHP 容器
      • 连接 Nginx 和 PHP 容器
      • 测试 PHP 配置
    • MySQL 容器配置
      • 基本配置
      • 数据持久化
      • 网络和安全性配置
      • 测试数据库连接
      • 维护和备份
    • 部署网站代码
      • 将 PHP 代码放置在 ./www 目录
      • 确保代码和容器的正确关联
      • 配置文件和目录权限
      • 测试网站功能
      • 调试和问题解决
    • 运行和测试
      • 启动 Docker Compose 服务
      • 测试网站可访问性
      • 性能调优和监控
      • 问题诊断和解决
    • 维护和更新
      • 容器和代码的更新流程
      • 安全性维护
      • 故障排除和问题解决

在这里插入图片描述

简介

在现代网站开发中,LNMP(Linux, Nginx, MySQL, PHP)架构因其高效能和稳定性而备受青睐。本教程旨在引导您使用 Docker 和 Docker Compose 在 LNMP 架构上搭建 PHP 网站。Docker 作为一种流行的容器化技术,提供了一种轻量级、一致的环境来部署和运行应用,而 Docker Compose 则进一步简化了多容器 Docker 应用的定义和共享过程。

本教程假设您已具备基本的 Docker 知识和网站开发经验,重点放在实际的操作和配置上。我们将一步步通过编写 docker-compose.yml 文件来定义所需的服务,配置 Nginx 和 PHP 容器,实现它们之间的关联,并确保网站程序文件正确部署在 ./www 目录下。同时,Nginx 的虚拟机配置文件将被放置在 ./nginx/conf.d 目录下。

我们将采用实践导向的方法,通过具体的示例代码来展示每个步骤。通过本教程的学习,您不仅能够掌握使用 Docker 和 Docker Compose 搭建 LNMP 环境的技能,还能获得一些关于容器化应用开发的实用经验。让我们开始这趟学习之旅吧。

环境准备和安装

在开始搭建 LNMP 网站之前,首先需要确保您的开发环境中安装有 Docker 和 Docker Compose。这些工具是构建和管理您的应用的基础。

安装 Docker

Docker 是一个开源容器化平台,它允许您在隔离的容器中运行应用。安装 Docker 的步骤因操作系统的不同而略有差异。

  1. Linux系统: 大多数现代 Linux 发行版都可以直接从官方仓库安装 Docker。例如,在 Ubuntu 上,您可以使用以下命令安装 Docker:
    sudo apt update
    sudo apt install docker.io
    
  2. Windows 和 macOS 系统: 对于 Windows 和 macOS 用户,Docker 提供了 Docker Desktop,可以从 Docker 官网 下载并安装。

安装完成后,您可以运行 docker --version 来检查 Docker 是否正确安装。

安装 Docker Compose

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。安装 Docker Compose 通常需要下载其二进制文件并赋予执行权限。

  1. 下载最新版本的 Docker Compose:
    sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
  2. 使二进制文件可执行:
    sudo chmod +x /usr/local/bin/docker-compose
    
  3. 验证安装,运行 docker-compose --version

准备项目目录结构

LNMP 应用的文件和配置需要组织在一个结构化的目录中。为此,我们将创建以下目录结构:

  • www/:存放 PHP 网站代码。
  • nginx/:存放 Nginx 相关配置。
    • conf.d/:存放 Nginx 的虚拟主机配置文件。

您可以使用以下命令来创建这些目录:

mkdir -p ./www
mkdir -p ./nginx/conf.d

通过上述步骤,您已经成功设置了运行 LNMP 应用所需的基础环境。接下来,我们将进入 docker-compose.yml 文件的编写,这是搭建和运行您的 LNMP 应用的关键步骤。

编写 Docker Compose 文件

docker-compose.yml 是 Docker Compose 的配置文件,它定义了您的应用服务、网络和卷。在本节中,我们将详细介绍如何编写此文件来设置 LNMP 环境。

基础结构

首先,创建一个名为 docker-compose.yml 的文件在项目的根目录。该文件的基础结构如下:

version: '3.8'
services:
  nginx:
    # Nginx 服务配置
  php:
    # PHP 服务配置
  mysql:
    # MySQL 服务配置

配置 Nginx 服务

docker-compose.yml 文件中,添加 Nginx 服务的配置:

services:
  nginx:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./www:/var/www/html
      - ./nginx/conf.d:/etc/nginx/conf.d
    depends_on:
      - php

这里,我们使用了 Nginx 的官方镜像,并映射了端口 80。同时,将 ./www 目录挂载到容器的 /var/www/html,并将 ./nginx/conf.d 目录挂载到 /etc/nginx/conf.d 以使用自定义的 Nginx 配置。

配置 PHP 服务

接下来,在 docker-compose.yml 中添加 PHP 服务配置:

services:
  php:
    image: php:fpm
    volumes:
      - ./www:/var/www/html
    depends_on:
      - mysql

此处,我们使用了 PHP 的官方 fpm 镜像。PHP 服务同样挂载 ./www 目录,以便 Nginx 和 PHP 可以共享网站代码。

配置 MySQL 服务

最后,配置 MySQL 服务:

services:
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: mydb
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  mysql_data:

这里使用了 MySQL 的官方镜像,并设置了环境变量来配置数据库密码和创建一个新的数据库。此外,我们定义了一个名为 mysql_data 的卷用于数据持久化。

完整的 docker-compose.yml 示例

version: '3.8'
services:
  nginx:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./www:/var/www/html
      - ./nginx/conf.d:/etc/nginx/conf.d
    depends_on:
      - php
  php:
    image: php:fpm
    volumes:
      - ./www:/var/www/html
    depends_on:
      - mysql
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: mydb
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  mysql_data:

这个 docker-compose.yml 文件定义了一个基本的 LNMP 环境,包括 Nginx、PHP 和 MySQL 服务。接下来,我们将详细介绍 Nginx 容器的配置。

Nginx 容器配置

在 LNMP 架构中,Nginx 扮演着重要的角色,它不仅作为 web 服务器处理 HTTP 请求,还负责将 PHP 请求代理给 PHP-FPM。下面我们将详细介绍如何配置 Nginx 容器。

创建 Nginx 配置文件

首先,您需要在 ./nginx/conf.d 目录下创建一个配置文件。这个配置文件将定义如何处理进入 Nginx 服务器的请求。一个基本的配置文件 default.conf 可能看起来像这样:

server {
    listen 80;
    server_name localhost;

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

    location / {
        try_files $uri $uri/ =404;
    }

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

这个配置文件设定了服务器监听端口 80,定义了网站根目录为 /var/www/html,并设置了处理 PHP 文件的规则。fastcgi_pass 指令告诉 Nginx 将 PHP 请求转发到名为 php 的服务,在这里即我们的 PHP-FPM 容器。

设置虚拟主机和端口映射

docker-compose.yml 文件中,我们已经为 Nginx 容器配置了端口映射(80:80),这意味着主机的 80 端口将映射到容器的 80 端口。通过这种方式,您可以通过主机的 IP 地址或域名来访问 Nginx 服务器。

配置文件放置

如前所述,Nginx 配置文件应放置在 ./nginx/conf.d 目录下。由于这个目录被挂载到容器的 /etc/nginx/conf.d 中,因此容器内的 Nginx 将使用您提供的配置文件。

优化和安全设置

Nginx 的配置可根据需要进行优化和安全性增强。例如,您可以通过设置更有效的缓存策略、启用 gzip 压缩、配置 SSL 证书等方式提升性能和安全性。但这些配置通常取决于具体的应用需求和部署环境。

测试配置

配置完成后,您可以通过运行 docker-compose up 来启动服务,并访问主机的 IP 或域名来测试 Nginx 是否正确配置和运行。如果遇到问题,查看容器的日志通常是一个好的开始。

通过以上步骤,Nginx 容器配置基本完成。接下来的部分将涉及 PHP 容器的配置。

PHP 容器配置

PHP 容器在 LNMP 架构中负责处理 PHP 代码。通过正确配置 PHP 容器,您可以确保 PHP 代码高效运行,并与 Nginx 容器顺利协作。

编写 PHP Dockerfile

虽然您可以直接使用 PHP 的官方镜像,但为了更好地适应项目需求,通常需要定制化 PHP 容器。这可以通过创建一个 Dockerfile 来实现。例如,在 ./php 目录下创建一个 Dockerfile

FROM php:fpm

# 安装 PHP 扩展
RUN docker-php-ext-install mysqli pdo pdo_mysql

# 其他必要的设置或安装步骤

这个 Dockerfile 从官方的 PHP FPM 镜像开始,安装了 MySQL 相关的 PHP 扩展。您可以根据项目需要添加更多的扩展或配置。

配置 PHP 容器

docker-compose.yml 中,您需要对 PHP 容器进行配置。假设您已创建了上述的 Dockerfile,配置看起来可能是这样的:

services:
  php:
    build: ./php
    volumes:
      - ./www:/var/www/html

这里的 build 指令告诉 Docker Compose 在哪里找到 Dockerfile 并构建 PHP 容器。同时,我们挂载了 ./www 目录,以便 PHP 容器可以访问您的 PHP 代码。

连接 Nginx 和 PHP 容器

在 LNMP 架构中,Nginx 通常用作前端服务器,它会将 PHP 请求代理给 PHP-FPM。在 docker-compose.yml 文件中,通过在 Nginx 容器的配置中设置 depends_on,我们已经定义了 Nginx 依赖于 PHP 容器,这确保了容器间的正确启动顺序。

测试 PHP 配置

一旦配置完成,您可以通过运行 docker-compose up 来启动所有服务。为了测试 PHP 容器是否正常工作,您可以创建一个简单的 PHP 脚本,例如 info.php,包含以下内容:

<?php
phpinfo();
?>

将此文件放置在 ./www 目录下,然后通过浏览器访问此页面(例如,http://localhost/info.php)。如果一切设置正确,您应该能看到 PHP 的配置信息。

至此,PHP 容器的配置部分已经完成。接下来,我们将深入 MySQL 容器的配置。

MySQL 容器配置

MySQL 是 LNMP 架构中的关键组件,负责数据存储和管理。在 Docker 环境中配置 MySQL 容器需要确保数据的安全性和持久性。

基本配置

docker-compose.yml 文件中,MySQL 服务的配置主要涉及镜像选择、环境变量设置以及卷的配置。下面是一个基本的 MySQL 服务配置示例:

services:
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: exampledb
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    volumes:
      - mysql_data:/var/lib/mysql
    restart: always

在这个配置中,我们使用了 MySQL 5.7 版本的官方镜像,并通过环境变量设置了 root 密码、创建了一个数据库以及指定了数据库用户和密码。同时,定义了一个名为 mysql_data 的卷来持久化存储 MySQL 数据。

数据持久化

数据持久化是配置数据库容器时的一个关键考虑因素。在上述配置中,volumes 部分确保了 MySQL 数据库的数据不会随容器的重新创建而丢失。mysql_data 卷映射到了容器内的 /var/lib/mysql 目录,这是 MySQL 存储数据的默认位置。

网络和安全性配置

尽管在简单示例中我们没有显式定义网络,Docker Compose 默认创建了一个网络并使得同一 docker-compose.yml 文件中定义的容器能够互相通信。对于更高级的配置,您可能需要配置网络安全规则或端口映射。

测试数据库连接

为了验证 MySQL 容器是否正常工作,您可以尝试从 PHP 容器连接到 MySQL 容器。例如,您可以在 PHP 脚本中使用之前设置的数据库用户和密码进行连接测试。

维护和备份

对于生产环境,还需要考虑数据库的维护和备份策略。虽然这些内容超出了本教程的范围,但它们对于确保数据安全和可靠性至关重要。

通过以上步骤,您已经完成了 MySQL 容器的基本配置。接下来,我们将进入网站代码的部署阶段。

部署网站代码

部署网站代码是设置 LNMP 环境的最后一步。这一步涉及将您的 PHP 网站代码放置在正确的位置,并确保它可以被 Nginx 和 PHP 容器正确处理。

将 PHP 代码放置在 ./www 目录

您的 PHP 网站代码应该放置在项目结构中的 ./www 目录下。这个目录被配置为挂载到 Nginx 和 PHP 容器的相应位置,以便两个容器都可以访问到这些文件。

例如,您可以将网站的首页 index.php 放置在 ./www 目录中:

// ./www/index.php
<?php
echo "欢迎来到我的 PHP 网站!";
?>

确保代码和容器的正确关联

由于 ./www 目录被挂载到了 Nginx 容器的 /var/www/html 以及 PHP 容器的同一路径下,因此任何放置在 ./www 的文件都将自动出现在两个容器中。这种设置确保了 Nginx 可以将对 PHP 文件的请求传递给 PHP 容器。

配置文件和目录权限

确保您的代码文件和目录具有适当的权限,以便 Docker 容器中的服务能够正确地读取和执行这些文件。通常,文件权限应设置为 644,而目录权限则设置为 755。

测试网站功能

完成代码部署后,您应该测试网站的功能性。启动所有服务(使用 docker-compose up 命令),然后在浏览器中访问您的网站(通常是 http://localhost)。如果一切配置正确,您应该能看到您的 PHP 网页。

调试和问题解决

如果网站没有按预期工作,检查以下几点:

  • 确保 docker-compose.yml 文件中的所有服务都正确配置。
  • 检查 Nginx 和 PHP 容器的日志以查找可能的错误信息。
  • 确认您的 PHP 代码对于容器环境是兼容的。

至此,您已经成功完成了基于 Docker Compose 的 LNMP 环境搭建和 PHP 网站代码的部署。下一步是运行和测试整个应用。

运行和测试

成功部署网站代码后,下一步是运行整个 LNMP 环境,并对网站进行测试,以确保一切按预期工作。

启动 Docker Compose 服务

  1. 启动服务: 在项目根目录下,运行以下命令来启动所有定义在 docker-compose.yml 文件中的服务:

    docker-compose up -d
    

    这将以守护进程模式启动所有服务,使其在后台运行。

  2. 检查服务状态: 为了确认所有容器都正确运行,您可以使用:

    docker-compose ps
    

    这个命令将列出所有正在运行的容器及其状态。

测试网站可访问性

  1. 访问网站: 在浏览器中输入 http://localhost 或您配置的域名。如果配置正确,您应该能够看到您的 PHP 网站的首页。

  2. 测试页面功能: 确保测试网站的所有功能,包括数据库连接、表单提交等,以确保所有部分均正常工作。

性能调优和监控

  1. 性能调优: 根据网站的响应和资源使用情况,您可能需要调整 Nginx 和 PHP 的配置,例如增加 worker 进程数量或调整内存限制。

  2. 日志监控: 检查 Nginx 和 PHP 容器的日志可以帮助您识别任何潜在问题。日志通常可以通过以下命令查看:

    docker-compose logs [service_name]
    

问题诊断和解决

如果在测试过程中遇到问题,以下是一些常见的诊断步骤:

  • 检查容器日志: 日志通常会包含错误信息和警告。
  • 进入容器进行调试: 使用 docker exec 命令进入特定的容器进行更深入的调试。
  • 网络连接测试: 确保容器之间的网络连接正常,特别是 Nginx 与 PHP 容器之间。

完成这些步骤后,您的 LNMP 环境和 PHP 网站应该能够正常运行和服务于访问者。

至此,整个 LNMP 环境的搭建、网站代码部署、运行和测试部分已经完成。下一步将是关于容器和代码的维护更新,以及安全性维护和备份策略的讨论。

维护和更新

维护和更新是确保网站长期稳定运行的重要环节。这包括对 Docker 容器的更新、代码的维护,以及确保整体系统的安全性。

容器和代码的更新流程

  1. 更新 Docker 镜像: 定期检查并更新您的 Nginx、PHP 和 MySQL 镜像到最新版本。使用以下命令拉取最新镜像:

    docker-compose pull
    
  2. 重建并重启服务: 在更新了 Docker 镜像或进行了代码更改后,需要重建并重启服务:

    docker-compose up -d --build
    
  3. 代码版本控制: 为您的代码使用版本控制系统,如 Git,以跟踪更改和快速回滚。

安全性维护

  1. 定期更新: 定期更新所有服务的镜像,以包含最新的安全修复和更新。

  2. 备份策略: 设定定期备份数据库和重要数据的策略。可以使用如下命令备份 MySQL 数据库:

    docker exec [mysql_container_name] mysqldump -u [username] -p[password] [database_name] > backup.sql
    
  3. 监控系统安全: 实施监控系统以便及时发现异常行为或安全威胁。

故障排除和问题解决

  1. 日志审查: 定期审查容器日志以识别潜在问题。

  2. 资源监控: 使用工具监控服务器资源使用情况,如 CPU 和内存使用率,以便及时调整配置。

  3. 社区和支持: 利用社区支持和官方文档来帮助解决遇到的问题。

通过上述步骤,您可以保持您的 LNMP 环境和 PHP 网站的长期健康和安全性。定期维护和适时更新是确保网站稳定性和安全性的关键。

至此,我们已经完成了关于使用 Docker Compose 搭建基于 LNMP 架构的 PHP 网站的全面指南。从环境准备到部署、运行、测试以及维护更新,我们已经涵盖了整个流程的每一个关键步骤。

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

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

相关文章

Text2SQL研究-Chat2DB体验与剖析

文章目录 概要业务数据库配置Chat2DB安装设置原理剖析 小结 概要 近期笔者在做Text2SQL的研究&#xff0c;于是调研了下Chat2DB&#xff0c;基于车辆订单业务做了一些SQL生成验证&#xff0c;有了一点心得&#xff0c;和大家分享一下.&#xff1a; 业务数据库设置 基于车辆订…

【stomp实战】websocket原理解析与简单使用

一、WebSocket 原理 WebSocket是HTML5提供的一种浏览器与服务器进行全双工通讯的网络技术&#xff0c;属于应用层协议。它基于TCP传输协议&#xff0c;并复用HTTP的握手通道。浏览器和服务器只需要完成一次握手&#xff0c;两者之间就直接可以创建持久性的连接&#xff0c; 并…

【DDD】学习笔记-领域模型驱动设计

领域模型驱动设计自然是以提炼和转换业务需求中的领域知识为设计的起点。在提炼领域知识时&#xff0c;没有数据库的概念&#xff0c;亦没有服务的概念&#xff0c;一切围绕着业务需求而来。尤其是领域建模的分析阶段&#xff0c;应该只关注问题域&#xff0c;模型表达的是业务…

自用metadata.pegasus.txt bat生成脚本

下面代码保存为一个bat文件,放在存放rom的文件夹下运行 echo off setlocal enabledelayedexpansion :menu cls echo Please select a game ROM type: echo 1. FC echo 2. PSP echo. set /p choice"Enter your choice (1 or 2): " if "%choice%…

林浩然与杨凌芸的Java奇遇记:内部类的四重奏

林浩然与杨凌芸的Java奇遇记&#xff1a;内部类的四重奏 Lin Haoran and Yang Lingyun’s Java Adventure: A Quartet of Inner Classes 在一个充满代码香气的午后&#xff0c;程序员界的才子林浩然与机智灵动的女程序员杨凌芸&#xff0c;在Java的世界里展开了一场别开生面的“…

FPGA_vga显示

一 VGA 1.1 VGA VGA是视频图像阵列&#xff0c;是一种使用模拟信号进行视频传输的标准协议。 1.2 VGA接引脚定义 VGA分公母两种&#xff0c;RGB显示标准。 1.3 VGA显示器 VGA显示器采用图像扫描的方式进行图像显示&#xff0c;将构成图像的像素点&#xff0c;在行同步信号…

2024年阿里云服务器活动价格表

2024年2月阿里云服务器租用价格表更新&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核…

Python 深入理解 os 和 sys 模块

Python 深入理解 os 和 sys 模块 OS 介绍代码智能连接&#xff08;拼接&#xff09;路径创建目录展示&#xff08;列出目录&#xff09;删除文件重命名文件或目录 sys 介绍代码命令行参数处理 (sys.argv)标准输入输出重定向 (sys.stdin, sys.stdout, sys.stderr)&#xff1a;解…

备战蓝桥杯---搜索(进阶3)

看一道比较难又有趣的题&#xff1a; 下面是分析&#xff1a; 我们不妨把属性值看成点&#xff0c;一个装备可以看成一条边&#xff08;只能选一个端点&#xff09;不存在有装备属性值的当成一个点&#xff0c;于是我们便形成了树或图&#xff0c;如果是树的话&#xff0c;有一…

请立即收藏!春节必备AI工具盘点:一键拜年短信、海报!AI全家福!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

Maven之安装自定义jar到本地Maven仓库中

Maven之安装自定义jar到本地Maven仓库中 文章目录 Maven之安装自定义jar到本地Maven仓库中1. 命令行窗口安装方式1. 常用参数说明2. 安装实例 2. IDEA中安装方式3. 使用 1. 命令行窗口安装方式 安装指定文件到本地仓库命令&#xff1a;mvn install:install-file; 在windows的cm…

iOS 需求 多语言(国际化)App开发 源码

一直觉得自己写的不是技术&#xff0c;而是情怀&#xff0c;一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的&#xff0c;希望我的这条路能让你们少走弯路&#xff0c;希望我能帮你们抹去知识的蒙尘&#xff0c;希望我能帮你们理清知识的脉络&#xff0…

正点原子--STM32基本定时器学习笔记(2)

目录 1. 相关寄存器介绍 1.1 控制寄存器 1(TIMx_CR1)​编辑 1.2 DMA/中断使能寄存器(TIMx_DIER) 1.3 状态寄存器(TIMx_SR) 1.4 计数器(TIMx_CNT) 1.5 预分频器(TIMx_PSC) 1.6 自动重装载寄存器(TIMx_ARR) 2. 工程建立 3. 导入tim.c文件 4. 相关HAL库函数介绍 4.1 H…

购物车商品数量为0判断是否删除

当编辑商品的数量为1&#xff0c;再减的话&#xff0c;我们搞个模态提示&#xff0c;让用户决定是否要删除这个商品&#xff1f; //商品数量的编辑功能handleItemNumEdit(e){const {operation,id}e.currentTarget.dataset;console.log(operation,id);let {cart}this.data;let …

13. UE5 RPG限制Attribute的值的范围以及生成结构体

前面几章&#xff0c;我们实现了通过GameplayEffect对Attribute值的修改&#xff0c;比如血量和蓝量&#xff0c;我们都是有一个最大血量和最大蓝量去限制它的最大值&#xff0c;而且血量和蓝量最小值不会小于零。之前我们是没有实现相关限制的&#xff0c;接下来&#xff0c;我…

3.1-媒资管理之需求分析+搭建Nacos

文章目录 媒资管理模块1 模块需求分析1.1 模块介绍1.2 业务流程1.2.1 上传图片1.2.2 上传视频1.2.3 处理视频1.2.4 审核媒资 2.2 搭建Nacos2.2.1 服务发现中心2.2.2 配置中心2.2.2.1 配置三要素2.2.2.3配置content-api 2.2.3 公用配置2.2.4 配置优先级2.2.5 导入配置文件2.2.6 …

三、设计模式相关理论总结

一、面向对象编程 1.1 概述 简称Object Oriented Program(OOP)&#xff0c;指以类或对象作为基础组织单元&#xff0c;遵循封装、继承、多态以及抽象等特性&#xff0c;进行编程。其中面向对象不一定遵循封装、继承、封装和多态等特性&#xff0c;只是前人总结的套路规范&…

前端JavaScript篇之对闭包的理解

目录 对闭包的理解用途循环中使用闭包解决 var 定义函数的问题 对闭包的理解 闭包是指一个函数能够访问并操作其词法作用域&#xff08;定义时所在的作用域&#xff09;之外的变量的能力。它可以通过在一个函数内部创建另一个函数来实现。内部函数可以访问外部函数的局部变量、…

Python算法题集_两数相加

Python算法题集_两数相加 题2&#xff1a;两数相加1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【直接相加】2) 改进版一【对齐链表】3) 改进版二【数组求和】 4. 最优算法 本文为Python算法题集之一的代码示例 题2&#xff1a;两数相加 1.…

相机图像质量研究(10)常见问题总结:光学结构对成像的影响--光圈

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…