要在 Docker 中部署 PHP 环境,通常需要搭配 Web 服务器(如 Nginx/Apache)和 PHP-FPM。以下是详细步骤:
方案一:使用 Docker Compose(推荐)
# docker-compose.yml version: '3.8' services: # PHP-FPM 服务 php: image: php:8.2-fpm volumes: - ./src:/var/www/html # 挂载项目代码 # 可选:安装扩展(示例) command: > bash -c "docker-php-ext-install pdo pdo_mysql && exec php-fpm" # Nginx 服务 nginx: image: nginx:alpine ports: - "8080:80" # 暴露端口到宿主机 volumes: - ./src:/var/www/html - ./nginx.conf:/etc/nginx/conf.d/default.conf depends_on: - php # 数据库(可选) mysql: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: example volumes: - mysql-data:/var/lib/mysql volumes: mysql-data:
步骤说明:
-
创建目录结构:
myapp/ ├── docker-compose.yml ├── nginx.conf └── src/ └── index.php
-
配置 Nginx (
nginx.conf
):server { listen 80; root /var/www/html; location / { index index.php; } location ~ \.php$ { fastcgi_pass php:9000; # 指向 PHP-FPM 服务 include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
-
创建测试文件 (
src/index.php
):<?php phpinfo();
-
启动服务:
docker-compose up -d
-
访问测试:
打开浏览器访问http://localhost:8080
方案二:单容器运行(PHP 内置服务器)
# 快速启动(开发环境) docker run -d --name php-app \ -p 8080:80 \ -v $(pwd)/src:/var/www/html \ php:8.2-apache
常用操作:
操作 | 命令 |
---|---|
构建并启动 | docker-compose up -d |
查看日志 | docker-compose logs -f |
停止服务 | docker-compose down |
安装 PHP 扩展 | docker-php-ext-install 扩展名 |
进入容器 | docker exec -it 容器名 bash |
常见问题解决:
-
文件权限问题:
-
在 Dockerfile 中添加:
RUN chown -R www-data:www-data /var/www/html
-
-
安装扩展:
FROM php:8.2-fpm RUN docker-php-ext-install pdo pdo_mysql mysqli
-
自定义 php.ini:
# docker-compose.yml volumes: - ./php.ini:/usr/local/etc/php/conf.d/custom.ini
-
连接 MySQL:
// PHP 代码中连接数据库 $host = 'mysql'; // 使用 Docker 服务名 $db = 'test'; $user = 'root'; $pass = 'example';
提示:生产环境需注意:
使用非 root 用户运行
配置 SSL/TLS
设置合理的资源限制
使用
.env
文件管理敏感信息
通过以上步骤,您已成功在 Docker 中部署 PHP 环境。可根据实际需求调整配置和扩展。
访问以下资源了解更多信息:
Free Resources
official
Article
PHP 学习路径(Roadmap)
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。