如何在Docker容器内访问http://127.0.0.1:8000及Laravel部署优化
Laravel Docker部署相关问题解答
容器内部访问服务的方法
php artisan serve默认绑定的是本地回环地址127.0.0.1:
- 如果你是在运行serve命令的同一个容器内部访问,直接请求
http://127.0.0.1:8000即可正常访问,无需额外配置。 - 如果你需要从同Docker网络下的其他容器访问该服务,需要修改启动命令,让服务绑定到所有网卡:
修改后可以通过当前容器的IP/容器名+8000端口访问。php artisan serve --host=0.0.0.0 --port=8000
更优的部署方案
php artisan serve是专为本地开发设计的轻量服务器,并发能力极低,不建议在开发以外的场景使用,推荐以下替代方案:
开发场景
直接使用Laravel官方维护的Laravel Sail作为Docker运行环境,已经预制了PHP、Nginx、数据库、Redis等常用服务,无需手动编写Dockerfile,仅需简单配置即可启动全套开发环境。
如果需要自定义Docker配置,采用PHP-FPM + Nginx的组合架构:
- PHP容器运行php-fpm进程处理业务逻辑
- Nginx容器作为反向代理,负责静态资源响应、动态请求转发到PHP-FPM服务
生产场景
在PHP-FPM + Nginx的基础上,额外做以下优化:
- 镜像构建阶段提前执行
php artisan config:cache、php artisan route:cache、php artisan view:cache等缓存命令,降低运行时开销 - 单独启动队列容器执行
php artisan queue:work处理异步任务 - 单独启动调度容器执行
php artisan schedule:work处理定时任务 - 如果流量较高可以配置负载均衡,横向扩展PHP-FPM容器实例
内容的提问来源于stack exchange,提问作者Omar Esmael
相关产品推荐
相关产品推荐

