打造最小化docker容器镜像

 本文章主要记录博主近几年的使用, 去除知识冗余 以最简单直接方式是记录如何打造最小化 docker 容器镜像以 提高构建速度 以及 容器优化 ,本次实验我们使用典型的 PHP镜像 为实验目标其他类型类似可以参考。概述 打造最小化docker容器镜像的几个步骤尽可能选择 alpine tag 类型镜像减少构建层数清理无用缓存数据分阶段构建alpine 镜像 如果是为了保持镜像最小化建议使用 alpine 镜像 本身 alpine 系统大小只有 5M 所有基于 alpine 系统构建的镜像要比基于其他系统镜像要小的多### 一、核心差异对比维度AlpineUbuntu/DebianCentOS镜像体积≈5 MBUbuntu: ≈72-188 MB Debian: ≈47-125 MB≈200-230 MB包管理器apk(轻量高效)apt(功能全面)yum(企业级支持)C库musl libc(轻量)glibc(兼容性强)glibc安全性默认最小化安装,攻击面小依赖较多,需手动精简企业级安全策略启动速度极快(资源消耗低)中等较慢减少构建层数在构建 dockerfile 是我们尽可能...

PHP,Golang,前端,.Net,数据库,Linux,解决方案,其他 2025-07-08 AM 47次 0条

使用FrankenPHP部署php网站程序

 使用 FrankenPHP 代替 nginx 和 php-fpm 部署 php程序网站程序 本次我们使用国内框架 ThinkPHP 作为部署目标,其他框架类似。FrankenPHP FrankenPHP 建立在 Caddy Web 服务器之上的现代 PHP 应用程序服务器,用 Go 编写。FrankenPHP 特性可伸缩 与 PHP 8.2+、大多数 PHP 扩展和所有 Caddy 模块兼容。唯一服务 设计简洁明了:只需要一个服务,只需要一个二进制文件!FrankenPHP 不需要 PHP-FPM,它使用为 Go web 服务器特别定制的自己的 SAPI。易于部署 作为Docker 镜像的云原生应用交付。兼容 Kubernetes 和所有现代云平台。也可以将您的 PHP 应用程序打包为独立的、自执行的静态二进制文件。Worker 模式 一次启动您的应用程序并保持其在内存中!它准备在几毫秒内处理传入请求。103 Early Hints 103 Early Hints 是 web 平台的一个全新特性,可以通过提前 30% 的时间加载网站。FrankenPHP 是唯一支持提前提示的 ...

PHP,Golang,解决方案 2025-05-15 PM 903次 0条

整理分享早期自研中小型企业级开发系统架构

 本文主要整理分享早期部分 脱敏后 设计的 中小型企业级系统开发架构图 。架构对比 本次对比采用 1H2G1M ECS 与 1H1G RDS 本地测试网络延迟为 18ms ~ 19ms 进行测试,周期为 6个月 以实际普通商城项目为对比实例名称自研架构原生TP原生Laravel其他第三方知名框架(2~3个)开发效率5 day ~ 8 day20 day ~ 31 day21.5 day ~ 29 day17 day ~ 25 dayBUG 发生率1% ~ 15%70% ~ 100%65% ~ 100%%49 ~ 78%平均MS22ms ~ 25ms27ms ~ 45ms29ms ~ 43ms35ms ~ 62ms扩展性100%25%26%53%可维护率100%13%15%49% 以上测试用例均做过简单专业的程序优化以及系统优化,测试数据可能有上下浮动仅作参考。

Linux,解决方案 2025-04-17 AM 38次 0条

Docker Compose 命令全解

本文主要记录分享 Docker Compose 命令相关解释方便日志快速查阅服务管理启动服务docker-compose up说明:启动所有服务,并在前台运行。常用参数:-d:以后台模式运行。-f:指定docker-compose文件。--build:启动前重新构建镜像。--force-recreate:强制重新创建容器。示例:docker-compose -f xxxx.yml up -d --build停止服务docker-compose down说明:停止并移除所有服务、网络和卷。常用参数:--volumes:同时删除卷。--rmi all:删除所有镜像。示例:docker-compose down --volumes重启服务docker-compose restart说明:重启所有服务。示例:docker-compose restart web查看服务状态docker-compose ps说明:列出所有服务的状态。示例:docker-compose ps日志管理查看日志docker-compose logs说明:查看所有服务的日志。常用参数:-f:实时跟踪日志输出。--t...

解决方案,其他 2025-03-26 AM 439次 0条

Docker Compose 配置文件全解

docker-compose.ymlservices: web: # 定义 Web 服务 image: nginx:latest # 使用 Nginx 镜像 container_name: my_web # 自定义容器名称 ports: - "80:80" # 映射主机端口到容器端口 volumes: - ./html:/usr/share/nginx/html # 挂载主机目录到容器 environment: # 设置环境变量 - NGINX_HOST=example.com networks: - my_network # 连接到自定义网络 depends_on: # 定义依赖关系 - db restart: always # 设置重启策略 logging: # 配置日志 driver: json-file options: max-size: "10m"...

解决方案 2025-03-26 AM 419次 0条

Ubuntu乌班图命令行扩容教程

 本文主要记录在虚拟机中扩容硬盘后系统中Ubuntu系统中不显示不生效问题,假设现在已经在虚拟机中扩容了 250G 硬盘,并且已经重启。查看硬盘容量命令sudo lsblk回显信息NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 250G 0 disk ├─sda1 8:1 0 1G 0 part /boot/efi ├─sda2 8:2 0 2G 0 part /boot └─sda3 8:3 0 196.9G 0 part └─ubuntu--vg-ubuntu--lv 252:0 0 196.9G 0 lvm / sr0 11:0 1 1024M 0 rom 可以看到 sda 已经是...

Linux,解决方案 2024-07-19 PM 1320次 0条

项目性能优化的指标,目标

性能优化的终极目标是什么性能优化的目标实际上是为了更好的用户体验一般我们认为用户体验是下面的公式:用户体验 = 产品设计(非技术)+ 系统性能 ≈ 系统性能 = 快那什么样的体验叫快呢?3秒定理 一般我们认为网站页面的加载速度在3秒以内就可以称作合格了,加载速度越趋近于0,越快。 3秒定理:Strangeloop在对比了众多网站,并对其性能进行分析之后得出了一个著名的3秒定理,当网站页面加载速度超过3秒后,57%的访客会离开这个网站。  如果想让我们的系统快起来,就要做性能调优。项目性能优化以下可以做为优化的标准:前端工程师:首屏时间、白屏时间、可交互时间、完全加载时间;移动端工程师:端到端响应时间、Crash率、内存使用率、FPS;后端工程师:RT、TPS、并发数。影响因素1:数据库读写、RPC、网络IO、逻辑计算复杂度、缓存影响因素2:JVM[Throughput吞吐量、Footprint访存足迹、Latency延迟]影响性能的关键要素产品设计:产品逻辑、功能交互、动态效果、页面元素基础网络:网络=连接介质+计算终端代码质量&架构移动端环境:设备类型&性能、网络...

PHP,Golang,前端,.Net,解决方案,其他 2024-03-12 PM 1116次 0条

Redis 提示 protocol error, got 'u' as reply type byte 解决方案

 遇到一个奇怪的问题,在 php 中使用 workerman 或者传统 pcntl_fork 的开启子进程时 大约十几分钟就会出现一段异常报错 protocol error, got 'u' as reply type byte 初步诊断是redis提示的 大致意思是 协议错误,得到'u'作为回复类型字节 。异常信息protocol error, got 'u' as reply type byte通过代码排查以及报错提示初步判断是redis的问题原因分析 传统 cli 下不会出现这个问题,只有 workerman 下以及 pcntl_fork 的开启子进程时 十几分钟后才会出现。 已知 workerman 底层使用的也是 pcntl_fork 我们直接分析这个函数。 pcntl_fork 函数 先创建主进程然后在根据需要创建N个子进程,而redis使用 单例模式 或者使用 static 来进行保存连接对象时候并且在主线程内有创建这个连接,那么就会出现以上 protocol error, got 'u' as reply type byte 错误 这种异常一般称为...

PHP,Linux,解决方案,其他 2023-12-18 PM 1305次 0条

pixi学习资料以及问题收集

 本文主要收集楼主在学习 pixijs 过程中所用到的资料文档以及遇到的一些问题,方便日后查看。 阅读此文是默认已经对 pixijs 有了基本的了解。简述 PixiJS 的核心是一个渲染系统,它使用 WebGL(或可选的 Canvas)来显示图片和其他 2D 视觉内容。 它提供了完整的场景图(要渲染的对象的层次结构),并提供交互支持以支持处理单击和触摸事件。 它是现代 HTML5 世界中 Flash 的自然替代品,但提供了超出 Flash 所能实现的更好的性能和像素级效果。 它非常适合在线游戏、教育内容、互动广告、数据可视化...... 任何复杂图形非常重要的基于 Web 的应用。 与 Cordova 和 Electron 等技术相结合,PixiJS 应用可以作为移动和桌面应用分发到浏览器之外。中文文档pixi中文文档(推荐)pixi中文文档(比较老旧仅做参考)官方文档pixijs官方文档pixijs官方网站已解决问题 已下记录已解决的pixijs使用中的一些问题。手机端渲染模糊 我们主要使用 resolution 和 autoDensity 来解决手机端显示渲染模糊问题,实测有...

前端,解决方案,其他 2023-10-11 AM 1056次 0条

使用virtualbox挂载文件夹教程

 下面记录了我们在使用 virtualbox 虚拟机命令行模式下挂载文件夹的步骤及流程。进入设置设置共享文件夹首先选择右侧虚拟机选择设置按钮点击添加共享文件夹选择文件夹配置我们选择自动挂载,固定分配安装增强功能进入系统后我们选择顶部 设备 选择安装增强功能创建挂载增强功能文件夹mkdir /mnt/cdrom挂载增强功能mount /dev/cdrom /mnt/cdrom安装更新软件包yum install -y gcc gcc-devel gcc-c++ gcc-c++-devel make kernel kernel-devel bzip2执行安装增强功能cd /mnt/cdrom/ && ./VBoxLinuxAdditions.run创建共享文件夹mkdir /mnt/project更新软件包yum update重启服务器reboot执行挂载命令sudo mount -t vboxsf project /mnt/project可以看到我们已经使用virtualbox挂载文件夹成功了。开机自动挂载修改配置文件vi ~/.bashrc

Linux,解决方案 2023-06-16 PM 1900次 0条