You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab CI/CD执行composer install后Docker容器缺失vendor目录

问题原因及解决方案

核心原因

你执行的两次docker run是完全独立的容器实例:

  • 第一次docker run image composer install启动的容器里,依赖安装生成的vendor目录仅存在于该容器的临时文件系统中。
  • 第二次docker run image ls启动的是全新容器,使用的是原始镜像的干净文件系统,自然看不到前一个容器里的修改。

解决方法

方法1:在同一个容器内执行多命令

把composer install和ls用shell串联,放在同一个docker run命令里,确保操作都在同一个容器的文件系统中进行:

docker run image sh -c "composer install && ls"

方法2:挂载流水线工作目录到容器(GitLab场景推荐)

GitLab流水线的工作目录在整个作业流程中是共享的,通过卷挂载将项目目录映射到容器内部,让composer install直接把vendor生成在流水线工作目录中,后续步骤也能直接复用:

docker run -v $CI_PROJECT_DIR:/app image composer install --working-dir=/app

执行完后直接在流水线中运行ls $CI_PROJECT_DIR就能看到vendor目录。

注意事项

  • 要确保容器内的工作目录和挂载路径对应,比如用--working-dir=/app指定composer的执行目录,和宿主机的$CI_PROJECT_DIR映射一致。
  • 如果你的镜像默认工作目录不是项目根目录,需要调整挂载路径或--working-dir参数。

内容的提问来源于stack exchange,提问作者Cubex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:23:13