讲师中心 微信公众号
AI工具推荐 视频效率加速

Composer怎么安装Laravel Sail自定义镜像_Composer如何修改Sail的Docker配置添加自定义PHP扩展【操作】

千晨酱_9684

千晨酱_9684

发布时间:2026-03-28 17:58:31

|

628人浏览过

|

来源于php中文网

原创

正确做法是先创建项目再修改 docker-compose.yml 中 services.app.image 或 build.context,改完需执行 sail down -v && sail up --build;PHP 扩展应通过复制 .so 文件至 /var/www/docker/php/ext/ 并配 .ini 启用,避免运行时安装。

composer怎么安装laravel sail自定义镜像_composer如何修改sail的docker配置添加自定义php扩展【操作】

composer create-project 时怎么指定 Sail 自定义镜像

默认 composer create-project laravel/laravel 用的是官方基础镜像,不支持直接换镜像。Sail 的镜像配置不在 Composer 阶段生效,而是在项目初始化后、首次运行 sail up 时才读取 docker-compose.yml。所以别在 create-project 命令里加参数想换镜像——它根本不管那套。

正确做法是:先拉下项目,再改 docker-compose.yml 里的 build.context 或 image 字段。

  • 如果想用自己构建的 PHP 镜像,把 services.app.image 改成你的镜像名,比如 my-laravel-php:8.2
  • 如果想本地定制 Dockerfile,把 services.app.build.context 指向你放 Dockerfile 的目录(如 ./docker/php),并确保该目录下有 Dockerfile
  • 改完必须删掉旧容器和镜像:sail down -v,否则 Docker 会复用缓存,新配置不生效

如何在 Sail 的 Dockerfile 中安全添加 PHP 扩展

Sail 默认用的是 Laravel 官方维护的 laravelsail/phpXX 基础镜像,它禁用了 pecl install 和部分编译工具。直接写 pecl install redis 会失败,报错类似 command not found: pecl 或 configure: error: unrecognized options: --with-redis。

推荐方式是沿用基础镜像的扩展机制:它预留了 /var/www/docker/php/conf.d/ 和 /var/www/docker/php/ext/ 两个挂载点,支持通过复制预编译好的 .so 文件 + .ini 启用扩展。

立即学习“PHP免费学习笔记(深入)”;

Discussion Composer
Discussion Composer

围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par

下载
  • 先确认你要装的扩展是否已在官方镜像中提供:查 laravel/sail runtimes 目录,比如 8.2 版本已内置 redis、opcache、gd 等,只需在 docker-compose.yml 的 environment 里加 PHP_EXTENSIONS=redis,opcache
  • 若要装未内置的扩展(如 grpc),得自己编译:基于官方镜像写多阶段 Dockerfile,在 build 阶段装依赖、编译,再 COPY .so 到最终镜像的 /var/www/docker/php/ext/
  • 切勿在运行时用 sail artisan tinker 或 sail bash 里手动 apt-get install —— 容器重启就丢,且破坏镜像一致性

修改 sail up 后 PHP 不加载自定义扩展的常见原因

明明改了 Dockerfile、也 COPY 了 .so 和 .ini,但 php -m | grep xxx 就是看不到,大概率卡在这几个地方:

  • .ini 文件名必须以 .ini 结尾,且不能含大写字母或空格;内容里 extension=xxx.so 的路径要写对,推荐用绝对路径或直接写扩展名(PHP 会自动在 extension_dir 下找)
  • 检查 php -i | grep "extension_dir" 输出的路径,确认你的 .so 确实放在那儿;Sail 默认是 /usr/lib/php/20220829(PHP 8.2)这类版本号路径,不是 /usr/lib/php/extensions/
  • docker-compose.yml 里 volumes: 挂载覆盖了 /var/www/docker/php/ext 或 /etc/php/8.2/cli/conf.d/?挂载会屏蔽镜像内文件,导致你的 .ini 根本没被读到
  • 执行 sail down -v && sail up --build,漏掉 --build 就不会重新构建镜像,改了 Dockerfile 也白搭

为什么不要在 .env 中用 SAIL_PHP_VERSION 切换镜像版本

SAIL_PHP_VERSION 这个环境变量只在 composer create-project 创建项目时被 Sail 的安装脚本读取一次,用于决定生成哪个 docker-compose.yml 模板。一旦项目建好,它就彻底失效了。

后续你改 .env 里的 SAIL_PHP_VERSION=8.3,sail up 依然用原来生成的 docker-compose.yml,里面的 image: laravelsail/php82 不会自动变成 php83。

  • 真要升级 PHP 版本,应该手动编辑 docker-compose.yml,把所有 laravelsail/php82 替换成 laravelsail/php83
  • 同时检查 ./docker/php/Dockerfile(如果存在)是否仍基于旧版本基础镜像,比如 FROM laravelsail/php82:latest 得同步改掉
  • 注意 PHP 主版本升级可能带来扩展 ABI 不兼容,比如 igbinary 在 8.2 和 8.3 编译的 .so 不能混用

最易被忽略的是:Docker 镜像层缓存会让旧构建残留,哪怕改了所有配置,不清理 docker system prune -a(慎用)或至少 docker builder prune,就可能跑着“看似新实则旧”的环境。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

相关专题

更多
laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

857

2024.04.09

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

835

2024.04.09

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

2488

2024.04.09

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

4201

2024.04.10

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

6050

2025.08.05

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

4016

2025.08.05

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

7529

2025.08.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

1456

2026.03.04

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

80

2026.10.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

phpEnv手册
phpEnv手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn