必须在 workspace 容器内执行 composer install,因宿主机与容器环境隔离,php 版本、扩展、路径、ssl 配置均不同,宿主机安装的依赖容器无法识别,且拷贝 vendor 会导致权限、软链、平台检测等问题。

为什么不能直接在宿主机运行 composer install?
因为 Laradock 的 PHP 环境(比如 php-fpm 或 workspace 容器)和宿主机是隔离的,PHP 扩展、版本、扩展路径、openssl 配置全都不一样。你在宿主机装的依赖,容器里根本认不出来,甚至会报 Class not found 或 failed to open stream。
必须进对应容器执行 Composer,才能保证环境一致、autoload 正确、扩展可用。
- 别在宿主机跑
composer install后把vendor/拷进容器——权限、符号链接、平台检测都会出问题 -
workspace容器是默认入口,带 Git、Composer、Node.js,适合日常开发操作 - 如果项目用到
ext-sodium或ext-redis,只有容器内启用的扩展才生效,宿主机装了也没用
怎么进容器并正确运行 composer install?
先确认容器已启动:docker-compose up -d nginx php-fpm workspace。然后进 workspace 容器(不是 php-fpm),它是专为开发命令设计的:
docker-compose exec workspace bash
进去后,切换到你的项目目录(通常是 /var/www/your-project),再执行:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 首次安装:运行
composer install --no-interaction --optimize-autoloader(--no-interaction避免卡在 license 询问;--optimize-autoloader加速加载) - 更新依赖:用
composer update,但生产环境禁止这么做——Laradock 默认没开COMPOSER_ALLOW_SUPERUSER,别硬加sudo - 如果提示
Could not fetch https://repo.packagist.org,大概率是容器 DNS 或国内网络问题,临时换源:composer config -g repo.packagist composer https://packagist.phpcomposer.com
composer.json 里哪些字段在 Docker 下特别敏感?
不是所有本地能跑的配置,在容器里都安全。几个高频翻车点:
-
"platform": {"php": "8.1.0"}—— 必须和容器里实际 PHP 版本严格一致,否则composer install会跳过某些包或报错Your requirements could not be resolved -
"scripts"中调用php artisan或npm run dev的命令,得确认对应 CLI 工具已在容器中安装(比如php-fpm容器没装 Node,就不能在那跑npm) -
"autoload": {"psr-4": {...}}路径映射要基于容器内路径(如"App\": "app/"),不是宿主机路径 - 如果用了
laravel/sail或orchestra/testbench,注意它们的bin/脚本可能依赖宿主机php,得重写成docker-compose exec workspace php调用
更新失败常见错误和应对方式
最常卡在两个地方:内存不足和证书验证失败。
-
PHP Fatal error: Allowed memory size of ... bytes exhausted—— 在容器里执行前先扩内存:php -d memory_limit=-1 /usr/local/bin/composer update -
cURL error 60: SSL certificate problem—— 不要关 SSL 验证!正确做法是进workspace容器,运行:curl -sS https://getcomposer.org/installer | php重装 Composer,它会自动适配容器 CA 证书 -
Failed to clone https://github.com/xxx, git was not found——workspace默认有 Git,但如果删过基础镜像或用了精简版,需在docker-compose.yml的workspace服务里加build: { context: ./workspace }并确保Dockerfile包含apt-get install -y git
真正麻烦的是混合使用 Laravel Mix 和 Composer 插件时的缓存冲突——vendor/ 更新后,Mix 编译可能还读着旧的 classmap,得连 bootstrap/cache/ 和 node_modules/.cache/ 一起清。










