# almalinux-lnmp-php7 **Repository Path**: lighter_cd/almalinux-lnmp-php7 ## Basic Information - **Project Name**: almalinux-lnmp-php7 - **Description**: 基于 almalinux 的 lnmp 环境 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-22 - **Last Updated**: 2026-03-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于 AlmaLinux 9 的 LNMP 三容器 本目录将原来的 docker run 单容器方案改造为 docker compose 三容器方案: - mysql: 数据库存储与初始化 - php: PHP 7.4 FPM(可选启动 start.php 长连接) - nginx: Web 入口与静态文件服务,反向代理 PHP-FPM 支持以下组合: - 开发环境或生产环境 - 独立部署(Nginx 端口映射)或通过 Traefik 转发 ## 目录与挂载规划 - PHP 源码目录: - APP_SOURCE_DIR -> /var/www/html (php) - APP_SOURCE_DIR -> /usr/share/nginx/html (nginx) - Nginx 虚拟主机配置目录: VHOST_DIR -> /etc/nginx/vhost.d - MySQL 数据目录: MYSQL_DATA_DIR -> /var/lib/mysql - MySQL 备份目录: MYSQL_BACKUP_DIR -> /backup - 日志目录: - LOG_MYSQL_DIR -> /var/log/mysql - LOG_NGINX_DIR -> /var/log/nginx - LOG_PHP_FPM_DIR -> /var/log/php-fpm - LOG_XDEBUG_DIR -> /var/log/xdebug - VS Code Server 目录: VSCODE_SERVER_DIR -> /root/.vscode-server 另外,MySQL/Nginx/PHP 的主配置文件均通过 bind mount 从本仓库挂载,便于统一管理和版本控制。 ## Compose 文件分层 - docker-compose.yml: 基础服务定义(mysql/php/nginx、挂载、网络) - docker-compose.dev.yml: 开发环境覆盖(MySQL 暴露、Xdebug) - docker-compose.prod.yml: 生产环境覆盖(MySQL 暴露、PHP 资源限制、重启策略) - docker-compose.standalone.yml: 独立部署覆盖(Nginx 端口映射) - docker-compose.traefik.yml: Traefik 覆盖(标签 + 外部网络) ## 环境变量文件 1. 开发环境: cp .env.dev.example .env.dev 2. 生产环境: cp .env.prod.example .env.prod 请根据机器路径、密码、域名修改对应值。 关键变量: - MYSQL_ROOT_PASSWORD: MySQL root 密码 - MYSQL_DATA_DIR: MySQL 数据目录 - MYSQL_BACKUP_DIR: MySQL 备份目录 - APP_SOURCE_DIR: 业务源码目录 - XDEBUG_MODE: 开发常用 `develop,debug`,生产建议 `off` ## 启动方式 ### 开发 + 独立部署 docker compose --env-file .env.dev -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.standalone.yml up -d --build ### 开发 + Traefik docker compose --env-file .env.dev -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.traefik.yml up -d --build ### 生产 + 独立部署 docker compose --env-file .env.prod -f docker-compose.yml -f docker-compose.prod.yml -f docker-compose.standalone.yml up -d --build ### 生产 + Traefik docker compose --env-file .env.prod -f docker-compose.yml -f docker-compose.prod.yml -f docker-compose.traefik.yml up -d --build ## 数据库备份示例 导出备份到宿主机备份目录(MYSQL_BACKUP_DIR): docker compose --env-file .env.prod -f docker-compose.yml -f docker-compose.prod.yml exec mysql sh -c 'mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" --all-databases > /backup/full_$(date +%F_%H%M%S).sql' 恢复示例: docker compose --env-file .env.prod -f docker-compose.yml -f docker-compose.prod.yml exec -T mysql sh -c 'mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /root/mingyi/db_backup/your_backup.sql ## 关闭与清理 docker compose --env-file .env.dev -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.standalone.yml down 按需加 -v 可以同时清理匿名卷。 ## 兼容旧脚本 保留了以下脚本名,内部已切换为 compose: - build_image.sh - run_image_mingyi_wsl2.sh - run_image_mingyi_hw.sh - run_image_mingyi_hw2.sh 可通过环境变量控制模式: - MODE=dev 或 MODE=prod - ROUTER=standalone 或 ROUTER=traefik