为了实现 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 时,可能需要额外调整文件共享设置。
修改 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 时,可能需要额外调整文件共享设置。