为了实现 PHP 文件的热更新(代码改动后无需重启容器即可生效),可以通过以下方法设置:

修改 docker-compose.yml

确保将本地的 PHP 代码目录挂载到容器中。调整 docker-compose.yml 中 web 服务的 volumes 部分:

version: '3.8'

services:
web:
image: php:apache
container_name: php_web
ports:
- "8080:80"
volumes:
- ./html:/var/www/html # 挂载本地代码
- ./php.ini:/usr/local/etc/php/php.ini # 自定义 PHP 配置(可选)
depends_on:
- db

db:
image: mysql:latest
container_name: mysql_db
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql

volumes:
db_data:

配置 php.ini (可选)

创建一个 php.ini 文件,并在其中启用开发模式和文件变更检测:

[PHP]
# 启用错误报告(开发环境)
error_reporting = E_ALL
display_errors = On
display_startup_errors = On

# 文件更新检测(适用于 OPcache)
opcache.enable = 1
opcache.validate_timestamps = 1
opcache.revalidate_freq = 0
opcache.max_accelerated_files = 10000

然后将该文件挂载到容器中,如上 volumes 配置。

确保文件挂载生效

1. 本地的 html 文件夹中修改任何 PHP 文件,容器内会实时同步。


2. 通过 Apache 的默认设置,PHP 脚本的更改会立即生效,无需重启服务。



运行并测试

重新启动容器:

docker-compose up -d

修改 html 文件夹中的 PHP 文件,然后刷新浏览器页面,改动应立即生效。

注意事项

开发环境:上述配置适用于开发环境,生产环境通常需要关闭 display_errors 并优化缓存(如 opcache)。

文件挂载问题:确保文件挂载正确,尤其是在非 Linux 系统(如 Windows 或 macOS)下使用 Docker Desktop 时,可能需要额外调整文件共享设置。
 
 
Back to Top