ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

macOS下Docker部署Nginx+PHP开发环境指南

macOS下Docker部署Nginx+PHP开发环境指南 1. 项目概述在macOS系统上搭建完整的Web开发环境Docker无疑是最优雅的解决方案之一。作为一名长期在macOS平台工作的全栈开发者我亲测通过Docker容器化部署NginxPHP环境不仅解决了传统安装方式的各种依赖冲突问题还能实现开发环境的快速复制和迁移。本文将详细记录从零开始的全过程包括Docker Desktop的安装配置、Nginx与PHP容器的协同部署以及实际开发中最容易遇到的坑点解决方案。2. 环境准备2.1 硬件与系统要求建议使用配备Apple Silicon芯片(M1/M2)或Intel Core i5及以上处理器的Mac设备系统版本至少为macOS Monterey(12.0)。我目前在MacBook Pro M1 Pro(16GB内存)上运行Ventura 13.5环境进行演示。特别提醒若使用M系列芯片需注意部分x86镜像需要Rosetta 2转译。2.2 Docker Desktop安装访问Docker官网下载对应芯片版本的Docker Desktop双击下载的.dmg文件将鲸鱼图标拖拽到Applications文件夹首次启动时会要求授权安装网络组件需输入系统密码在Preferences → Resources中建议分配CPU: 4核Memory: 6GBSwap: 1GB注意安装后若遇到Virtualization support wasnt detected错误需Intel芯片检查BIOS中VT-x是否启用Apple Silicon确保没有禁用虚拟化扩展3. Docker基础配置3.1 镜像加速设置国内用户建议配置镜像加速器在Preferences → Docker Engine中添加{ registry-mirrors: [ https://hub-mirror.c.163.com, https://mirror.baidubce.com ] }3.2 常用命令验证docker --version # 确认版本(建议20.10) docker-compose --version # 确认compose版本 docker run hello-world # 测试基础功能4. NginxPHP容器部署4.1 方案选型对比方案优点缺点单容器(nginxphp-fpm)部署简单不符合单一职责原则多容器链接架构清晰扩展性强需要配置容器网络Docker Compose集成一键启动管理方便学习曲线稍陡推荐使用多容器Docker Compose方案下面是具体实现。4.2 目录结构准备mkdir -p ~/docker-webapp/{nginx,php,html} cd ~/docker-webapp4.3 编写docker-compose.ymlversion: 3.8 services: nginx: image: nginx:1.25-alpine ports: - 8080:80 volumes: - ./nginx/conf.d:/etc/nginx/conf.d - ./html:/var/www/html depends_on: - php php: image: php:8.2-fpm-alpine volumes: - ./html:/var/www/html environment: - PHP_MEMORY_LIMIT256M4.4 Nginx配置文件在nginx/conf.d下创建app.confserver { listen 80; server_name localhost; root /var/www/html; index index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass php:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }5. 环境验证与优化5.1 启动服务docker-compose up -d5.2 测试PHP解析在html目录创建info.php?php phpinfo(); ?访问 http://localhost:8080/info.php 应显示PHP信息页。5.3 PHP扩展安装修改docker-compose.yml中php部分php: build: context: ./php dockerfile: Dockerfile创建php/DockerfileFROM php:8.2-fpm-alpine RUN docker-php-ext-install pdo_mysql opcache重建容器docker-compose down docker-compose up -d --build6. 常见问题解决方案6.1 文件权限问题当出现文件写入权限错误时解决方案# 查看容器内www-data用户ID docker exec -it webapp-php-1 id www-data # 在宿主机设置相同UID(通常为82) sudo chown -R 82:82 ./html6.2 性能调优参数在php/Dockerfile中添加RUN { \ echo opcache.enable1; \ echo opcache.memory_consumption128; \ echo opcache.max_accelerated_files10000; \ } /usr/local/etc/php/conf.d/opcache.ini6.3 Xdebug配置(开发环境)RUN apk add --no-cache $PHPIZE_DEPS \ pecl install xdebug \ docker-php-ext-enable xdebug RUN { \ echo xdebug.modedevelop,debug; \ echo xdebug.client_hosthost.docker.internal; \ echo xdebug.start_with_requestyes; \ } /usr/local/etc/php/conf.d/xdebug.ini7. 生产环境建议7.1 安全加固措施禁用危险函数disable_functions exec,passthru,shell_exec,system限制PHP访问路径location ~ /\.ht { deny all; }7.2 日志监控配置services: nginx: logging: driver: json-file options: max-size: 10m max-file: 3查看日志命令docker-compose logs -f nginx7.3 多项目扩展方案通过修改nginx配置实现server { listen 80; server_name project1.local; root /var/www/project1/public; # ... } server { listen 80; server_name project2.local; root /var/www/project2/public; # ... }在/etc/hosts中添加127.0.0.1 project1.local project2.local
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表